自分のキャリアをあれこれ考えながら、Pythonで様々なデータを分析していくブログです

[Mac] Pythonの仮想環境をvenvで作成する方法

Python
Python

本記事ではpythonの仮想環境を作成するvenvというモジュールの使い方をまとめておきます。

venv --- 仮想環境の作成
ソースコード: Lib/venv/ venv モジュールは、軽量な仮想環境の作成を行います。それぞれの仮想環境は、 site ディレクトリに独立した Python パッケージの集合を持っています。仮想環境は、ベース Python とも呼ばれ...

ディープラーニング系のPythonのライブラリをインストールするときにありがちなのですが、たまに競合が発生して、例えばあるライブラリAはnumpyのバージョンが1.17.0が必要なのに、別のライブラリBはバージョン1.19.0以上が必要な場合があります。

このとき、ライブラリAとライブラリBは共存することができないので困ります。

そのため仮想環境を作成すれば仮想環境AにはライブラリAをインストールして、仮想環境BにはライブラリBをインストールして使用時に切り替えるということが可能になります。

下記はMacからの実行方法になりますが、WindowsやLinux環境でもだいたい同じ手順で準備できると思います。

それではやっていきます。

Pythonがインストール済みでコマンドが打てる状態からの作業になります。

# 作業ディレクトリの確認
pwd
Out[0]
/Users/hinomaruc/Desktop/notebooks
# バージョン確認
python3 -V
Out[0]
Python 3.9.6
# my-venvという仮想環境を作成
python3 -m venv my-venv
ls
Out[0]
my-venv

作成されていることを確認。
次にmy-venvフォルダの中身を確認してみます。

cd my-venv/
ls
Out[0]
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/
Out[0]
_distutils_hack/             pip-21.1.3.dist-info/        setuptools/                  
pip/                         pkg_resources/               setuptools-57.0.0.dist-info/

まだpandasをインストールしていないので、setuptoolsやpipしかありません。

仮想環境内で利用できるPythonの確認
ls -la /Users/hinomaruc/Desktop/notebooks/my-venv/bin/ | grep python
Out[0]
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で実行していますが、どちらも結果は変わりません。

方法1: pandasのインストール (ホストから仮想環境のPythonを指定)
/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3 -m pip install pandas
方法2: pandasのインストール(仮想環境内に入ってPythonコマンドを実行するパターン)
source /Users/hinomaruc/Desktop/notebooks/my-venv/bin/activate
python3 -m pip install pandas

Out[0]
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のバージョンをあげれるようなので、上げたい場合はアップグレードしておく。最初にやっておけばよかった。

pipのアップグレード
/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3 -m pip install --upgrade pip
Out[0]
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/
Out[0]
__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がつかえるかどうか確認してみます。

仮想環境のPythonを実行)
/Users/hinomaruc/Desktop/notebooks/my-venv/bin/python3
Out[0]
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__
Out[0]
'1.3.4'
quit()

無事インストールされエラーも出ませんでした。

Linuxでやったときはpandasに限りませんが、ライブラリのインポート時にエラーが出る場合があります。

その場合はエラー内容をググってひたすら解決していくということになります。

サーバーにaptやyumコマンドなどで必要なライブラリを追加したり、Pythonのビルド時に特定のファイルを含めるなど一筋縄でいかない場合もありますのでインフラやサーバー周りに詳しい方と一緒に環境の準備ができればベターかと思います。

タイトルとURLをコピーしました