最近、Pythonに触れることが多くなってきました。
その中で、環境構築についていろいろ学んできました。
Pythonの参考書の多くは”Anacondaで環境構築しましょう”と書いてあります。
しかし、Anacondaはセットアップファイルだけで4GBもあります。
また、自分のシステムに既に入っているPythonとの相互関係も最初の頃はよくわからなくなります。
Anacondaを横においておくと、Pythonには、パッケージマネージャーとして、”pip” というものがあります。
これも若干クセがあるので、いくつかおさえておくべきことがあります。
さらに、Pythonは”venv”というパッケージを使うことで、仮想環境を簡単に構築できます。
このvenvについて把握すると、Anacondaなどのことも理解しやすくなります。
ということで、私なりに理解したことをここでまとめていきたいと思います。
なお、ここではすべてPython3環境を意識していきます。pipはmacOSやUbuntuでは全部Python3になっています。DebianではPython2のようですが、最近、Debianを使っていないのでよくわかりません。(man pip に書いてある情報から記載しただけです)
現時点での私のおすすめは、
「基本、–userをつけてpipでインストール。試験的に試したかったらvenvで仮想環境内で構築」です。
概要は以下になります。
- pip
1.1 どのpipを使っているかの確認
1.2 システムへのインストールと個別ユーザーへのインストール -
venv
2.1 仮想環境の構築
2.2 仮想環境の有効化
2.3 仮想環境の無効化
pip
どのpipを使っているかの確認
いろいろなソフトを入れていると、ひとつのPCの中にいくつものPythonがインストールされていることがよくあります。脳画像解析では、最近、FSLもFreeSurferも独自のPythonをシステムの中にいれています。Anacondaなどを使われていると、さらにもうひとつのPythonも入っています。なので、Pythonで何か変な動きが起きているなと思った時は、まず、「どこにあるコマンドを使っているんだろう」という発想が大事になります。
それでは、どの pip を使っているかを確認しましょう。
which pip
私の場合は以下のようになりました。
$ which pip /usr/local/bin/pip
システムのpipを使っているようです。
次にバージョンも確認します。
$ pip --version pip 21.0.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
システムにある Python3.6に入っている pip 21.0.1 を使っているということがわかります。
ちなみに、Ubuntuでは、pipを使っていると以下のようなWARNINGが出ることがあります。
WARNING: You are using pip version 21.0.1; however, version 21.3.1 is available. You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
これはsudoを使って実行しないように注意してください。これに従ってそのままやるとシステムが壊れることがあります。私は昔、散々な目にあいました。(そしてこのようなブログ記事を書くに至っています)
Ubuntuでは、aptによって管理されるパッケージと、pipによって管理されるパッケージがあります。aptによって管理されているパッケージをpipでアップグレードしようとするとはまることがありますのでご注意ください。
システムへのインストールと個別ユーザーへのインストール
pipを使う時、インストールは
pip install パッケージ名
なのですが、システムにインストールするのとユーザー環境にインストールするのでコマンドが若干変わります。
ユーザー環境へのインストール(デフォルト)
ユーザー環境にインストールする場合は以下のようにしますが、最近の pip はデフォルトでユーザー環境にインストールします。
pip install パッケージ名 --user
この時、以下にインストールされます。
- コマンド
~/.local/bin
- パッケージそのもの
~/.local/lib/python3.X/site-packages
システムへのインストール(わかっている人のみ)
sudo -H をつけると、システムにインストールされますが、これはシステムを壊す可能性があるため、リスクをわかっている人のみ使ってください。sudo -H だと、$HOMEが現在のユーザーのまま保たれます。
sudo -H pip install パッケージ名
venv
venvは、Python3.3以降に準備されたPythonの仮想環境です。ものすごく簡単に言うと、「隔離されたPythonの環境を作ることができるので、失敗したらそのまま削除しても何も問題なし」という状況を作れます。
仮想環境の構築
それでは、仮想環境の構築をしていきます。ホームディレクトリの下に practice というディレクトリを作成し、その中に仮想環境 myvenv を作ることとします。
とても簡単で以下だけです。
mkdir practice cd practice python3 -m venv myvenv
ここでは “myvenv” としましたが、「Python実践入門」などには、”venv” で統一することをおすすめしているものもあります。
その場合には、python3 -m venv venv
となるわけですね。今は理解しやすいようにそのようにします。
そうすると、practiceの下に myvenv というディレクトリが作成されています。myvenvの中にPython一式が入っています。
仮想環境の有効化
それでは、このPythonを使うために有効化します。そのためには、myvenv/bin/activateを実行します。
source myvenv/bin/activate
すると、ターミナルが
(myvenv) kiyotaka@ubuntu:~/practice$
のように (myvenv) というものがつきます。
早速、python3の場所を確認してみましょう。
$ which python3 /home/kiyotaka/practice/myvenv/bin/python3
myvenvの下にある python3 を示していますね。
pipの場所も確認します。
$ which pip /home/kiyotaka/practice/myvenv/bin/pip
こちらも同様です。
ためしに、pydicom をインストールしてみます。
(myvenv) kiyotaka@ubuntu:~/practice$ pip install pydicom Collecting pydicom Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/53/9a/98df4fb41e7905b587be2ee9ce38bab8a092990bd174f46fd915a23ec0ea/pydicom-2.2.2-py3-none-any.whl (2.0MB) 100% |################################| 2.0MB 318kB/s Installing collected packages: pydicom Successfully installed pydicom-2.2.2
すんなり入りました。
仮想環境の無効化
無効化は簡単で、 deactivate
とするだけです。
(myvenv) kiyotaka@ubuntu:~/practice$ deactivate kiyotaka@ubuntu:~/practice$
deactivateすると、ターミナルの最初の (myvenv) がとれますので、わかります。
ちなみに、ここで which python3 をやってみます。
kiyotaka@ubuntu:~/practice$ which python3 /usr/bin/python3
システムの python3 に変化しました。
仮想環境の削除
myvenvをそのまま捨てるだけでOKです。
rm -rf myvenv
機械学習や深層学習を勉強したい時
以上をまとめると、機械学習や深層学習をとりいそぎ勉強してみたいけど、システムをいじるのが怖いという場合、
venvを使って以下をすることで、たいていのことができるかなと思います。以下は「PythonとKerasによるディープラーニング」
でインストールすることを勧められているパッケージに加えてscikit-learnを加えたものです。
なお、pip install -U pip
は pip そのものをアップデートするコマンドで、仮想環境なので最初に pip を最新版にアップデートしています。これをしないと opencv-python のインストールに失敗する場合があります。
cd $HOME mkdir practice_ml cd practice_ml python3 -m venv venv source venv/bin/activate pip install -U pip pip install opencv-python python-dateutil jupyter notebook pip install numpy scipy scikit-learn pip install cmake matplotlib pyyaml h5py pydot-ng keras pillow pip install tensorflow
このようにやっていけば、Anacondaに頼らなくても、仮想環境で必要なものを pip でいれていけば、たいていの場合はうまくいくのではないかと思います。
補足
Apple M1の場合、そうは簡単ではないということがわかりました。これはまた別のポストで扱おうと思います。
ピングバック: LinuxやmacOSでPythonの仮想環境を構築する方法
いつも大変勉強になります。先生は、Ubuntu上でPythonの環境構築をされているようですが、理由は何かございますでしょうか。自分はWindowsが使い慣れているので、PowerShellからの環境構築を試みています。
ご質問ありがとうございます。理由は簡単で、私は日常からLin4Neuroを使っているからです。チュートリアルでは皆様に仮想マシンでお配りしていますが、私のノートPCとデスクトップPCは実環境でLin4Neuroで動いているので、Pythonなども必然的にそのうえで環境を構築することになります…。逆にWindowsはそれこそWordとかPowerpointなど、同僚と情報を共有するためだけに使っているぐらいなので、そこまで使い倒さなくなってきています。Powershellはコマンドプロンプトに比べて使いやすさが増えてきましたので、いいのではないでしょうか。
ありがとうございます、大変よくわかりました。