Windowsでgit bash から pyenv-venv環境を構築する (pyenv-win)
少しはまったのでメモ
1. python をダウンロード&インストール
環境変数は設定しておく
非公式Pythonダウンロードリンク - Python downloads
2. pyenv-winをインストール
`pip install pyenv-win --target "$HOME.pyenv"
3. 環境変数を設定
pythonを呼び出したときにpyenvの方を読んでもらうため、一番うえに来るように設定しておく。
この時点ではshimsのほうはまだ存在していない(pyenv instlal XXXでpython環境をインストールすると自動的に生成される)が、どうせ必要になるので今やっておく。
C:\Users\<ユーザ名>\.pyenv\pyenv-win\shims C:\Users\<ユーザ名>\.pyenv\pyenv-win\bin
4. pyenvで使うpythonをインストールする
pythonのバージョン3.8.2及び、仮想環境のインストール先myPyenv/.myenv
は任意に変更可能です。以下は脳内変換してください。
## 入手可能なバージョンを確認 $ pyenv versions ## インストール $ pyenv install 3.8.2 #python 3.8.2の場合
5. cmdに切り替えたあと、pyenvを生成
以下はコマンドラインに切り替えて実行をしましょう。
## 仮想環境を構築するディレクトリを生成・移動 $ mkdir myPyenv $ cd myPyenv ## myPyenv以下ではpython 3.8.2を使いますよ、という宣言 $ pyenv local 3.8.2 $ pyenv rehash
この時点で、pythonは3.8.2が呼ばれるはずです。
この作業をgit bashのままやってしまうと、pyenv versionsは3.8.2になってくれるのに、python --verisonは#1でダウンロード&インストールしたバージョンが選択されてしまいます。
次に実行するpython -m venv .myenv
で作られる仮想環境は、そのタイミングで呼ばれるpythonのバージョンがベースになるので、python --versionで3.8.2になっていないと困ります。
# 確認 $ pyenv versions * 3.8.2 # 確認 $ python --version 3.8.2 # 仮想環境作成 $ python -m venv .myenv
これで基本的にはOKです。でも、windowsのbash経由で仮想環境を行き来するのは面倒なので、~/.bashrc
に以下のようなエイリアスを貼っておくとよいと思います
function myenv(){ cd C:/Users/<ユーザ名>/myPyenv/.myenv/Scripts . activate cd - } alias python='winpty python.exe' alias myenv=myenv
これでターミナルを再起動する(あるいはsource ~/.bashrc
)と、myenv
と打つだけで仮想環境に入り込めます。
$ myenv /c/Users/<ユーザ名> (myenv)
deactivateと打つと抜け出せます。