Python 基本操作 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(概要)
(概要)
 
4行: 4行:
 
追加モジュールのインストールとか基本的な操作についてまとめておきます。
 
追加モジュールのインストールとか基本的な操作についてまとめておきます。
  
 +
==='''Python'''===
 
*モジュールのインストール
 
*モジュールのインストール
 
:例 spleeterモジュールの場合
 
:例 spleeterモジュールの場合
 +
:※spleeterモジュールがこれだけで簡単にインストールできるとは限りません。もっといろいろ設定してからでないと上手くいかないこともあります。
 
<syntaxhighlight2 lang="python">
 
<syntaxhighlight2 lang="python">
 
pip install spleeter
 
pip install spleeter
 +
</syntaxhighlight2>
 +
 +
 +
*モジュールのバージョンを指定してのインストール
 +
:例 spleeter1.4.9モジュールの場合
 +
:※spleeterモジュールがこれだけで簡単にインストールできるとは限りません。もっといろいろ設定してからでないと上手くいかないこともあります。
 +
<syntaxhighlight2 lang="python">
 +
pip install spleeter==1.4.9
 +
</syntaxhighlight2>
 +
 +
 +
 +
*モジュールのアンインストール
 +
:例 spleeterモジュールの場合
 +
<syntaxhighlight2 lang="python">
 +
pip uninstall spleeter
 +
</syntaxhighlight2>
 +
 +
 +
*インストールするモジュールのバージョン一覧取得
 +
:例 spleeterモジュールの場合
 +
<syntaxhighlight2 lang="python">
 +
>pip install spleeter==0.0.0
 +
ERROR: Could not find a version that satisfies the requirement spleeter==0.0.0 (from versions: 1.4.1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 2.0, 2.0.1)
 +
ERROR: No matching distribution found for spleeter==0.0.0
 +
</syntaxhighlight2>
 +
:存在しないバージョンをインストールしようとすると、存在するバージョンを紹介してくる仕組みを逆手に取ったようなやり方です。
 +
 +
==='''Anaconda'''===
 +
*conda環境の情報を確認する。
 +
<syntaxhighlight2 lang="python">
 +
conda info
 +
</syntaxhighlight2>
 +
 +
 +
*conda環境の情報のシステムに関わる情報だけを確認する。
 +
<syntaxhighlight2 lang="python">
 +
conda info -s
 +
</syntaxhighlight2>
 +
:上記の他 -a で全部、-bで基本情報、-eで環境情報。-eはconda(base)やpython37(py37)のような仮想環境が一覧できると思っておけばよいかと。
 +
 +
 +
*conda環境の確認
 +
<syntaxhighlight2 lang="python">
 +
conda config --show
 +
</syntaxhighlight2>
 +
 +
 +
*condaでのオフライン方式モジュールInstall
 +
:例 spleeterモジュールの例
 +
:※1.このようなバージョンのものはありません。
 +
:※2.spleeterがこれだけで簡単にインストールできるとは限りません。
 +
<syntaxhighlight2 lang="python">
 +
conda install --offline spleeter-0.0.0-py38_0.tar.bz2
 +
</syntaxhighlight2>
 +
:モジュール本体はあらかじめコマンドを使う時のカレントディレクトリに保管する必要があります。そうでない場合はフルパスを--offlineの後ろの引数で指定する必要があります。
 +
 +
 +
*conda環境のモジュールInstall
 +
:例 spleeterモジュールの例
 +
:※1.このようなバージョンのものはありません。
 +
:※2.spleeterがこれだけで簡単にインストールできるとは限りません。
 +
<syntaxhighlight2 lang="python">
 +
conda install spleeter
 +
</syntaxhighlight2>
 +
:インストールを始めて1時間以上examining conflictとかって続く場合は競合調査の永久ループに入っています。別のモジュールからのインストールをするとか、専用の仮想環境を追加(下の方にコマンドは紹介しています。)するとか、Channelを特定するとか、工夫が必要になっていると思われます。
 +
 +
*conda環境のモジュールを特定のChannelからInstall
 +
:例 spleeterモジュールをconda-forgeというChannelからインストールする例
 +
:※1.このようなバージョンのものはありません。
 +
:※2.spleeterがこれだけで簡単にインストールできるとは限りません。
 +
<syntaxhighlight2 lang="python">
 +
conda install -c conda-forge spleeter
 +
</syntaxhighlight2>
 +
*conda環境のモジュールunInstall
 +
:例 spleeterモジュールの例
 +
<syntaxhighlight2 lang="python">
 +
conda uninstall spleeter
 +
</syntaxhighlight2>
 +
 +
 +
*conda環境のモジュールの最新版への更新
 +
:例 spleeterモジュールの例
 +
:※1.spleeterがこれだけで簡単に更新できるとは限りません。
 +
<syntaxhighlight2 lang="python">
 +
conda update spleeter
 +
</syntaxhighlight2>
 +
 +
 +
*conda環境のモジュールのキャッシュ削除
 +
:例 全部のキャッシュを削除する例
 +
<syntaxhighlight2 lang="python">
 +
conda clean -all
 +
</syntaxhighlight2>
 +
 +
:Windowsでは、以下のようなパスの下のモジュールのパッケージのキャッシュが削除されます。
 +
<syntaxhighlight2 lang="python">
 +
C:\ProgramData\Anaconda3\pkgs
 +
C:\Users\[ユーザ名]\.conda\pkgs
 +
C:\Users\[ユーザ名]\AppData\Local\conda\conda\pkgs
 +
</syntaxhighlight2>
 +
:これらは、Windowsアプリのインストーラーみたいなものです。インストール後にモジュールを使う分には必要の無いものです。ここで言うキャッシュは少し昔で言えば、インストール用のCDやDVDをずっとハードディスクの中に収めておくようなものです。CDは不要だから何処かに収納すると思います。モジュールの場合これをパッケージと呼んでいます。これがクラウドのような場所(Channel)にあるので、手元には不要ということです。でもクラウドだから消したら、またダウンロードに時間がかかるということはあります。ずっととっておいてもあまりいいことは無いのでうまく動いていて、安定しているなら、消した方が良いでしょう。
 +
 +
:--all のオプションを付けた実行ではインデックス(--i), ロックファイル(--l), tarball(--t), パッケージ(--p), ソース(--s)のキャッシュが消されます。全て消しても不都合は生じないものです。インデックスは一覧を検索するとき早くなる仕組みです。辞書順でどこに何のファイルがあるかをあらかじめ準備しておいて、すぐに表示できるようにします。イチからディスクにあるファイルの名前を調べて、表示するより速くなります。ロックファイルは、ファイルを使う時にファイル毎にロックファイルを置いて状態を記します。ロックファイルの中身の状態をみて、ファイルが使える状態にあるかを確認する仕組みです。パッケージは先に説明したとおりです。ソースファイルはパッケージのインストールを補助するようなプログラムコード一式です。tarballはパッケージのキャッシュの中でもtar形式になっているものを差します。tar形式のことをtarball(ターボール)と呼びます。tarは複数のファイルを一つにまとめるという仕組みで、圧縮は関係ないです。何を使って圧縮をしたかで、拡張子が分離します。compress=tar.Zあるいは.taz、gzip =.tar.gzあるいは.tgz、bzip2=.tar.bz2です。
 +
 +
 +
*conda環境のモジュール一覧のバージョン確認
 +
<syntaxhighlight2 lang="python">
 +
conda list
 +
</syntaxhighlight2>
 +
:anacondaはモジュールが多いはずなので、全部を表示するのには時間がかかります。特定のモジュールについて知りたい場合は二つ下のような方法がお勧めです。
 +
 +
 +
*conda環境のモジュール一覧の更新が必要なモジュール一覧のバージョン確認 既存と最新版の比較表示
 +
:<span style="color:red;">そのままは実行しては駄目ですが、以下の手順です。</span>
 +
<syntaxhighlight2 lang="python">
 +
conda update --all
 +
</syntaxhighlight2>
 +
:としてから、本当に<span style="color:red;">更新するかという問い合わせで n キーをおしてEnter。</span>
 +
 +
 +
*conda環境の特定モジュールのバージョン確認
 +
:例 spleeterモジュールの例
 +
<syntaxhighlight2 lang="python">
 +
conda list spleeter
 +
</syntaxhighlight2>
 +
:部分一致したモジュール名のバージョン確認なので、spleeter以外のspleeterを含むモジュールが表示される可能性があります。
 +
<syntaxhighlight2 lang="python">
 +
    package                    |            build
 +
    ---------------------------|-----------------
 +
    spleeter-0.0.0            |          py38_0        4.9 MB
 +
    ------------------------------------------------------------
 +
                                          Total:        4.9 MB
 +
</syntaxhighlight2>
 +
:上記のような結果が返ってくる事でしょう。buildの欄は、バージョンとは他に管理されているもので、同一バージョンの中でbuildだけが異なるモジュールが存在することがあるので付けられているものです。buildはモジュールを作るときにどのバージョンで作ったかを記すものですが、作成者によってさまざまな命名がされます。いずれにせよbuildも番号が新しいものが優先されてインストールされたりする仕組みになっています。
 +
 +
*conda環境の特定モジュールのバージョン確認
 +
:例 base環境つまりconda環境・anaconda環境の例
 +
<syntaxhighlight2 lang="python">
 +
conda list -n base
 +
</syntaxhighlight2>
 +
 +
 +
*condaの設定のssl_verifyをFalseにしたりTrueにする。
 +
<syntaxhighlight2 lang="python">
 +
conda config --set ssl_verify False
 +
もしくは
 +
conda config --set ssl_verify True
 +
</syntaxhighlight2>
 +
:sslの設定が上手く設定されていないとcondaを使ったダウンロードが出来ない場合がある。相手の認証情報を確認するための設定をするのは意外と面倒な場合もあるので、省略する時に使う。但しFalse状態は正体不明のところからDownloadするのは危険なので、取り扱いに注意が必要。
 +
 +
 +
*conda環境のChannels設定(モジュールをダウンロードする場所)の確認
 +
:例 defaultのダウンロード先を向いている場合
 +
<syntaxhighlight2 lang="python">
 +
(base) PS C:\...Anaconda3>conda config --get channels
 +
(base) PS C:\...Anaconda3>
 +
</syntaxhighlight2>
 +
:のようにエラーも何に表示されずに次のコマンド受付になった場合はdefaultを向いています。
 +
:つまり
 +
<syntaxhighlight2 lang="python">
 +
https://repo.anaconda.com/pkgs/main/win-64
 +
https://repo.anaconda.com/pkgs/main/noarch
 +
https://repo.anaconda.com/pkgs/r/win-64
 +
https://repo.anaconda.com/pkgs/r/noarch
 +
https://repo.anaconda.com/pkgs/msys2/win-64
 +
https://repo.anaconda.com/pkgs/msys2/noarch
 +
</syntaxhighlight2>
 +
:のようなモノです。conda config --showで確認すると
 +
<syntaxhighlight2 lang="python">
 +
default_channels:
 +
  - https://repo.anaconda.com/pkgs/main
 +
  - https://repo.anaconda.com/pkgs/r
 +
  - https://repo.anaconda.com/pkgs/msys2
 +
....
 +
....
 +
subdirs:
 +
  - win-64
 +
  - noarch
 +
</syntaxhighlight2>
 +
:と指定されている部分です。この組み合わせがdefaultと言っています。具体例なので人によって異なる設定になっていると思います。
 +
:noarchはノーアーキテクチャーを意味しています。Channelとしては、実際にはアーキテクチャーを問わないという意味で使われていて、それぞれの環境に合わせて動くようになっているモジュールなんかが含まれています。そのディレクトリの中にあるモジュールも確認するということです。
 +
 +
 +
*conda環境のChannels設定(モジュールをダウンロードする場所)を追加する。
 +
例:conda-forgeというChannelを追加する。conda-forgeは有志であらゆるモジュールのインストーラを配置することによって運営されている。なかなか凄いChannelで検索しても分かるようにかなり有名なChannelです。
 +
<syntaxhighlight2 lang="python">
 +
conda config --append channels conda-forge
 +
</syntaxhighlight2>
 +
 +
:一度でも追加するとconda config --get channelsの結果が変わるのかもしれまえん。
 +
<syntaxhighlight2 lang="python">
 +
(base) PS C:\...Anaconda3>conda config --get channels
 +
--add channels 'conda-forge'  # lowest priority
 +
--add channels 'defaults'  # highest priority
 +
(base) PS C:\...Anaconda3>
 +
</syntaxhighlight2>
 +
 +
:後から追加したものはlowest priority(低優先度)ですが、確かにChannelに追加されているので、問題ないでしょう。
 +
 +
 +
*conda環境のChannels設定(モジュールをダウンロードする場所)を削除する。
 +
:例:conda-forgeというChannelを削除する場合。
 +
<syntaxhighlight2 lang="python">
 +
conda config --remove channels conda-forge
 +
</syntaxhighlight2>
 +
 +
 +
*condaの中にある仮想環境を追加する。
 +
:例:python2.7をCondaの中に作る場合。
 +
<syntaxhighlight2 lang="python">
 +
conda create -n py27 python=2.7 anaconda -y
 +
</syntaxhighlight2>
 +
:py27 は python=2.7と対応していて、anacondaは2.7にanacondaモジュールを入れてcondaコマンドが使えるモノを構築するという意味です。これら部分だけ変更して追加します。py27の部分は任意です。自由に名前を付けられます。何用のpythonなのか?で分けてもいいわけです。例えば深層学習用ならconda create -n tensorflaw python=3.8 anaconda tensorflow -yというような感じで作るのだと思います。仮想環境は容量の許す限り作れます。それぞれの事情に合わせて使い分ける環境を用意するとよいのかもしれません。一つの目的毎に、一つの環境を作ると、小さい環境で、必要最低限なので、環境がぐっちゃぐっちゃになっても戻りやすい。いつでも手早くよい状態でプログラムを開発することが出来ます。-yは本当にやるのか?という確認を省略です。あとでyとかnを押してもいいです。
 +
 +
 +
*condaの中にある仮想環境を削除する。
 +
:例:Condaの中のpython2.7の仮想環境を削除する場合。
 +
<syntaxhighlight2 lang="python">
 +
conda remove -n py27 --all
 +
</syntaxhighlight2>
 +
:-nはnameの頭文字で任意でつけた名前で削除対象を決めるという意味です。なので後ろに続く引数もpy27ような名前の引数になっています。-allはバッサリ全部消すという意味です。先に示したconda info -eで現在、存在している仮想環境の名前が一覧で取得できます。-allを付け忘れるといろいろとゴミが残ってしまいます。例えばパッケージのキャッシュとか。キャッシュが残っていればまた再インストールのときに速いということもありますが、それに問題があれば、邪魔にもなったりするかもしれません。キャッシュのフォルダから直接を消すというような作業も出来るので、自分でうまいこと削除できるのであれば、-allはいらないかもしれないです。たぶん-allつけたほうが良いと思いますけど。逆に全部じゃなくて一部分だけを消すオプションもあります。-I でインデックスファイル、 -l ロック確認用ファイル、-t tar圧縮ファイル、-p 使ってないパッケージ、-s ソースコードみたいな感じです。
 +
 +
 +
*conda環境(base)の利用
 +
<syntaxhighlight2 lang="python">
 +
conda activate
 +
</syntaxhighlight2>
 +
:activateの後ろ引数を省略すると(base)となるconda環境になります。
 +
 +
 +
*conda環境あるいは仮想環境利用を開放する
 +
<syntaxhighlight2 lang="python">
 +
conda deactivate
 
</syntaxhighlight2>
 
</syntaxhighlight2>
  
 
[[Python]]の記事へ戻る
 
[[Python]]の記事へ戻る

2020年11月14日 (土) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス