本記事ではpythonの仮想環境を作成するvenvというモジュールの使い方をまとめておきます。
ディープラーニング系のPythonのライブラリをインストールするときにありがちなのですが、たまに競合が発生して、例えばあるライブラリAはnumpyのバージョンが1.17.0が必要なのに、別のライブラリBはバージョン1.19.0以上が必要な場合があります。
このとき、ライブラリAとライブラリBは共存することができないので困ります。
そのため仮想環境を作成すれば仮想環境AにはライブラリAをインストールして、仮想環境BにはライブラリBをインストールして使用時に切り替えるということが可能になります。
下記はMacからの実行方法になりますが、WindowsやLinux環境でもだいたい同じ手順で準備できると思います。
それではやっていきます。
Pythonがインストール済みでコマンドが打てる状態からの作業になります。
# 作業ディレクトリの確認
pwd
/Users/hinomaruc/Desktop/notebooks
# バージョン確認
python3 -V
Python 3.9.6
# my-venvという仮想環境を作成
python3 -m venv my-venv
ls
my-venv
作成されていることを確認。
次にmy-venvフォルダの中身を確認してみます。
cd my-venv/
ls
bin include lib pyvenv.cfg
binやらlibなどのフォルダが作成されているようです。
ちなみにプロキシ環境下でしたら、my-venvフォルダ直下にpip.confを作成すればpipコマンド実行時にプロキシを通してくれるかと思います。
詳しくはPIPの公式ページに記載されています。
仮想環境化ではsite-packagesという名前のフォルダ内にインストールしたパッケージがインストールされているようです。確認してみます。
ls /Users/hinomaruc/Desktop/notebooks/my-venv/lib/python3.9/site-packages/
_distutils_hack/ pip-21.1.3.dist-info/ setuptools/ pip/ pkg_resources/ setuptools-57.0.0.dist-info/
まだpandasをインストールしていないので、setuptoolsやpipしかありません。
ls -la /Users/hinomaruc/Desktop/notebooks/my-venv/bin/ | grep python
lrwxr-xr-x 1 hinomaruc staff 9 11 22 22:34 python -> python3.9 lrwxr-xr-x 1 hinomaruc staff 9 11 22 22:34 python3 -> python3.9 lrwxr-xr-x 1 hinomaruc staff 39 11 22 22:34 python3.9 -> /usr/local/opt/python@3.9/bin/python3.9
今回はPython3.9で作成したので仮想環境内ではpythonコマンドでもpython3コマンドでもPython3.9が実行されるようです。
そろそろpandasのインストールをします。方法は2つあります。私はいつも方法1で実行していますが、どちらも結果は変わりません。
/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3 -m pip install pandas
source /Users/hinomaruc/Desktop/notebooks/my-venv/bin/activate
python3 -m pip install pandas
Collecting pandas Using cached pandas-1.3.4-cp39-cp39-macosx_10_9_x86_64.whl (11.6 MB) Collecting python-dateutil>=2.7.3 Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) Collecting pytz>=2017.3 Using cached pytz-2021.3-py2.py3-none-any.whl (503 kB) Collecting numpy>=1.17.3 Using cached numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl (17.0 MB) Collecting six>=1.5 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Installing collected packages: six, pytz, python-dateutil, numpy, pandas Successfully installed numpy-1.21.4 pandas-1.3.4 python-dateutil-2.8.2 pytz-2021.3 six-1.16.0 **WARNING: You are using pip version 21.1.3; however, version 21.3.1 is available. You should consider upgrading via the '/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3 -m pip install --upgrade pip' command.**
pipのバージョンをあげれるようなので、上げたい場合はアップグレードしておく。最初にやっておけばよかった。
/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3 -m pip install --upgrade pip
Requirement already satisfied: pip in ./lib/python3.9/site-packages (21.1.3) Collecting pip Using cached pip-21.3.1-py3-none-any.whl (1.7 MB) Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 21.1.3 Uninstalling pip-21.1.3: Successfully uninstalled pip-21.1.3 Successfully installed pip-21.3.1
それでは再度、仮想環境にインストールしたパッケージを確認します。
ls /Users/hinomaruc/Desktop/notebooks/my-venv/lib/python3.9/site-packages/
__pycache__ pandas pytz _distutils_hack pandas-1.3.4.dist-info pytz-2021.3.dist-info dateutil pip setuptools distutils-precedence.pth pip-21.3.1.dist-info setuptools-57.0.0.dist-info numpy pkg_resources six-1.16.0.dist-info numpy-1.21.4.dist-info python_dateutil-2.8.2.dist-info six.py
pandasとpandasに依存するパッケージがインストールされているようなので無事成功。
実際にpandasがつかえるかどうか確認してみます。
/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3
Python 3.9.6 (default, Jul 4 2021, 21:45:11) [Clang 10.0.0 (clang-1000.10.44.4)] on darwin Type "help", "copyright", "credits" or "license" for more information.
import pandas as pd
pd.__version__
'1.3.4'
quit()
無事インストールされエラーも出ませんでした。
Linuxでやったときはpandasに限りませんが、ライブラリのインポート時にエラーが出る場合があります。
その場合はエラー内容をググってひたすら解決していくということになります。
サーバーにaptやyumコマンドなどで必要なライブラリを追加したり、Pythonのビルド時に特定のファイルを含めるなど一筋縄でいかない場合もありますのでインフラやサーバー周りに詳しい方と一緒に環境の準備ができればベターかと思います。