Mac上にPythonの開発環境を構築する(pip + venv)

Keywords

  • Python

Contents

  • 1. 前提
  • 2. Pythonのローカル開発環境構築は難しい
  • 3. 仮想環境
  • 3-1. 仮想環境の作成
  • 3-2. 仮想環境への切り替え
  • 3-3. ライブラリのインストール
  • 3-4. Pythonコードの実行
  • 3-5. 仮想環境の共有
  • 3-6. 仮想環境の終了
  • 4. その他
  • 5. 参考URL

前提

  • Pythonがインストールされていること(Ver3.9.1を使用)
  • Mac OS

Pythonのローカル開発環境構築は難しい

ライブラリをインストールしようとして、pipを使用すると、site-packagesという場所にインストールされます。(下記コマンドでsite-packagesのパスを確認できます。)

$ python3 -c "import site; print (site.getsitepackages())"

ためしに、$ pip3 install numpyを実行すると、site-packagesにnumpyが追加されます。($ pip3 uninstall numpyを実行するとsite-packagesからnumpyが取り除かれます。)

しかし、このパスはグローバルであり、プロジェクト毎に存在しているわけではありません。

PHPのComposerやNodeのnpmを使用するとプロジェクト毎にライブラリをインストールできる(グローバルにもできるが)がPythonではpipだけではできなさそうです。

仮想環境

仮想環境という仕組みを使えば、プロダクト毎にインストールするライブラリを管理することが可能となります。仮想環境というと、OSの仮想化をイメージするかもしれませんが、そういうものではなく、.venvディレクトリ内でライブラリのファイルを管理するようになり、仮想環境への切り替えを行うと、それらを参照するようになるだけです。

本稿ではPython3の標準ライブラリであるvenvを使った方法を紹介します。なお、ライブラリを使用すれば、他にも様々な方法があります。

https://github.com/David-OConnor/pyflow#a-thoroughly-biased-feature-table

仮想環境の作成

$ python3 -m venv .venv

仮想環境への切り替え

下記コマンドを実行すると、仮想環境に切り替わります。

$ . .venv/bin/activate

(.venv) $ python3 -c "import site; print (site.getsitepackages())"を実行すると、site-packagesのパスが仮想環境切り替え前と異なり、プロジェクトの中に配置されていることが確認できます。

なお余談ですが、echo $PATHを実行すると、一番左に/Users/naokimachida/IdeaProjects/statistics-exercise/venv/binが存在することが確認できます。(同名のファイルがある場合、左から順に優先順位が高くなります。)

そしてvenv/binの中を見てみると、python/python3/python3.9いずれでも/usr/local/bin/python3を参照することが確認できます。

(.venv) $ ls -l venv/bin   
(中略)
-rwxr-xr-x  1 naokimachida  staff   276 Dec 20 13:25 pip3.9
lrwxr-xr-x  1 naokimachida  staff     7 Dec 20 13:25 python -> python3
lrwxr-xr-x  1 naokimachida  staff    22 Dec 20 13:25 python3 -> /usr/local/bin/python3
lrwxr-xr-x  1 naokimachida  staff     7 Dec 20 13:25 python3.9 -> python3

そのため、pythonコマンド(インタプリタ)を実行する場合は、バージョン3を使用する場合でもpythonだけで大丈夫です。(本稿では明示的にpython3としています。)

ライブラリのインストール

(.venv) $ python3 -m pip install numpy

このコマンドを実行すると、.venv内にnumpyのライブラリがインストールされます。ただ、グローバルなsite-packagesにはインストールされません。

Pythonコードの実行

(.venv) $ python3 hoge.py

仮想環境の共有

リポジトリ管理の対象として、.venvを対象にするのではなく、ライブラリの一覧のファイルを作成し、それを対象にした方が良いです。

一覧ファイルの作成

(.venv) $ python3 -m pip freeze > requirements.txt

一覧ファイルに記載のライブラリのインストール

(.venv) $ python3 -m pip install -r requirements.txt

仮想環境の終了

(.venv) $ deactivate

このコマンドを実行すると、.venv内のライブラリが使えなくなるため、pythonのコードにimport numpyを記述して実行すると、ModuleNotFoundError: No module named 'numpy'のエラーが発生してしまいます。(もちろんグローバルにnumpyをインストールしていれば、問題なく実行できます。)

その他

もし、IntelliJ IDEAを使用しているのであれば、IntelliJ IDEAでPythonの開発環境を構築するも参照ください。

参考URL