Table of Contents
モチベーション
- Python2.X系とPython3.X系やpipとpip3を共存させて,必要に応じて切り替えて使いたい.
- Pythonのマイナーバージョンを細かく切り替えたい.
- pipでパッケージをインストールすると環境が汚れてしまうのでプロジェクトごとにパッケージを管理したい.
- 「プロジェクトごとにDockerコンテナを立ち上げてそこでPythonを実行する」というような大げさな管理はしたくない.
pyenvでPythonのバージョンを切り替える
デフォルトのPythonのバージョンを確認する
$ python --version Python 2.7.16
brew
でpyenvをインストールする$ brew install pyenv
PATHなどを設定する
export PYENV_ROOT="${HOME}/.pyenv" export PATH=${PYENV_ROOT}/bin:$PATH eval "$(pyenv init -)"
pyenvで使用可能なPythonのバージョン一覧を確認する
$ pyenv install -l Available versions: 2.1.3 2.2.3 2.3.7 : :
任意のバージョンをインストールする
$ pyenv install 3.9.0 : Installed Python-3.9.0 to /Users/xxxx/.pyenv/versions/3.9.0
切替可能なバージョンを確認する
$ pyenv versions \* system (set by /Users/xxxx/.pyenv/version) 3.9.0
システム全体のPythonバージョンを切り替える
$ pyenv global 3.9.0
$ pyenv versions
system
\* 3.9.0 (set by /Users/xxxx/.pyenv/version)
$ python --version
Python 3.9.0
$ pip -V
pip 20.2.3 from /Users/xxxx/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pip (python 3.9)
特定のディレクトリ内のみに特定のPythonバージョンを設定する
$ mkdir sandbox; cd sandbox
$ pyenv versions
\* system
3.9.0 (set by /Users/xxxx/.pyenv/version)
$ python --version
Python 2.7.16
$ pyenv local 3.9.0
$ cat .python-version
3.9.0
$ pyenv versions
system
\* 3.9.0 (set by /Users/xxxx/sandbox/.python-version)
$ python --version
Python 3.9.0
venvでパッケージを分離する
pyenvでPythonを任意のバージョンに切り替える
インストール済みのパッケージを確認する
$ pip list Package Version ---------- ------- pip 20.3.3 setuptools 49.2.1
仮想環境
<target directory>
を作成する.$ python -m venv <target directory> $ ls <target directory> bin include lib pyvenv.cfg
仮想環境を実行する
$ source <target directory>/bin/activate (target directory name) $
何かしらのパッケージをインストールし,仮想環境にパッケージがインストールされたことを確認する
$ pip install selenium : Successfully installed selenium... $ pip freeze selenium==3.141.0 urllib3==1.26.2
仮想環境を終了する
(target directory name) $ deactivate $
元の環境と仮想環境のパッケージが分離されていることを確認する
$ pip freeze $
pip freeze
とpip list
の違い
pip list
は,その環境にインストールされているパッケージをすべて出力する.一方,pip freeze
は,setuptools
などの内部的なパッケージ群は出力せず,ユーザが本来必要としているパッケージ名とそのバージョンの一覧を出力する.pip freeze > requirements.txt
にて,パッケージ名とバージョン一覧をrequirements.txt
に書き出し,pip install -r requirements.txt
を実行することで,パッケージ一覧を一括でインストールすることができる.