wslでのpython仮想環境作成


wslでのpython仮想環境作成

wslでのubuntuでは,最初からpythonがインストールされているが,プロジェクトごとにバージョンを切り替えたりする必要があるため,pythonのパッケージ管理を行うpyenvと仮想環境を作成するvenvをインストールしていく.

venv,pipインストール

以下を実行

$ sudo apt install python3-venv python3-pip

バージョン確認

# Python 
$ python3 -V

# pip
$ pip3 -V

# venv
$ apt show python3-venv

仮想環境作成

作成するディレクトリで以下を実行.

$ python3 -m venv venv-sample

するとvenv-sampleというディレクトリができる.

仮想環境をonにするときは

$ surce venv-sample/bin/activate

仮想環境をoffにするときは

(venv-sample)$ deactivate

pyenvインストール

git からクローン

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

環境変数を設定.

.bashrc.zshrcなど設定ファイルに以下を追記.

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="PYENV_ROOT/bin:PATH"
if command -v pyenv 1>/dev/null 2>1; then
    eval "$(pyenv init -)"
fi

シェルを再起動し,以下を実行すると,利用可能なpythonのバージョン一覧を確認できる.

$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
...
  anaconda-1.4.0
  anaconda-1.5.0
...

次にここにあるように,pythonをインストールするためのものをインストールする.

sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

終了したら,他のバージョンがインストールできるようになる.

pyenv install 3.6.12
# proxy通す場合は(必要ないかも)
https_proxy=[proxy_address]:[port] pyenv install 3.6.12

以下で確認

# インストールされている一覧
$ pyenv versions

# シェルにおける実行環境の設定
$ pyenv shell <バージョン>

# デフォルトの実行環境の設定
4 pyenv global <バージョン>

他のバージョンのpythonをいれたら元々あったsystemのpythonが謎に消えたが,たぶん問題ないので気にしない.

バージョンを指定して仮想環境作成

インストールしたバージョンで仮想環境を作成する.

まずはバージョンを変える.

$ pyenv shell 3.6.12

続いて,仮想環境を作成する

$ python3 -m venv venv-sample2

すると,venv-sample2というディレクトリができる.

そして仮想環境をonにする.

$ source venv-sample2/bin/activate

仮想環境内でpythonのバージョンを確認すると,変更したバージョンとなっていることがわかる.

# 仮想環境入る前
$ python3 -V
> Python 3.8.6

# 仮想環境入った後
(venv-sample2)$ python -V
> Python 3.6.12

作成した仮想環境内で,pipなどで必要なパッケージなどを管理していく.

仮想環境を消す

作成した仮想環境が必要なくなったら,ディレクトリごと消せばok.

$ rm -rf venv-sample

pipenv

pyenvとvenvが合わさったpipenvというものがあるらしいが,よくわからん.

参考文献