windows10でのpython環境を作成するときの一例
- pyenvでpythonバージョンを切り替える
- パッケージはvenvで個々に管理する
全体の流れ
1.pythonのインストール
2.pyenv-winのインストール
3.必要に応じてvenv
1. pythonインストール
公式のインストーラーでインストール
add pythonXX to PATH にチェックをいれないと面倒なのでチェックを必ず入れる
それ以外はデフォルトのまま
(必要な場合はカスタマイズしてください)
2. pyenv-winのインストール
pyenv-win
pip install pyenv-win --target %USERPROFILE%/.pyenv
※ pythonインストール時にPATHに追加し忘れて、C:\Users\ユーザー名\AppData\Local\Programs\Python\Python39だけPATHに手で追加したがpipが動かないので先頭にpython -m をつけて(これ↓)実行した)
pipを直接指定して動かない場合
python -m pip install pyenv-win --target %USERPROFILE%/.pyenv
※PowerShell(or Git Bash)の場合は変数の名前が異なる。($HOMEを使用する)
pip install pyenv-win --target $HOME\.pyenv
これで、C:\Users\ユーザー名.pyenv が作成される。
この2つのパスをPATHに追加する
C:\Users\ユーザー名.pyenv\pyenv-win\bin は存在しているが 最初はshimsは無い。
%USERPROFILE%\.pyenv\pyenv-win\bin
%USERPROFILE%\.pyenv\pyenv-win\shims
手で追加してもいいし、次のpowershellでやってもよい
(手で追加の場合は、先頭におくこと。
既存の "C:/Users/[user]/AppData/Local/Microsoft/WindowsApps" これより先に位置していないと、pythonコマンドを叩くとMicrosoftストアが表示されてしまう)
[System.Environment]::SetEnvironmentVariable('PATH', $HOME + "\.pyenv\pyenv-win\bin;" + $HOME + "\.pyenv\pyenv-win\shims;" + $env:Path,"Machine")
※多くの解説記事にこれも書いてあるけどなくても動くかも
環境変数の「PYENV」に
%USERPROFILE%\.pyenv\pyenv-win
を手で追加。または次のpowershell
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
新しくcmdかpowershellを立ち上げて(新しく立ち上げないと今設定した環境変数が反映されない)
正しく設定されているか確認。
pyenv --version
pyenv 2.64.6.1
利用できるバージョンの確認
pyenv install --list
または
pyenv install -l
(ずらずらと利用可能なバージョンが表示される)
使いたいバージョンを入れる
pyenv install 3.7.9
:
pyenv install 3.9.4
使いそうなものをいくつか入れておけば、瞬時に切り替えられる。(後述)
installしたものは、versionsで確認できる
pyenv versions
3.7.9
3.9.4
切り替えるときは
pyenv local 3.9.4
local
を使って切り替える。
local
はユーザごとの環境を変えるコマンド。全ユーザに影響するのはglobal
。
(私はlocal
しか使ったことがない)
このコマンドを叩いたディレクトリに.python-versionという、バージョン番号が書かれたファイルが作成される。
その場所でpythonを実行するときは.python-versionに書かれたバージョンのpythonが実行される。
用途やプロジェクトに応じて、pythonのバージョンを切り替えられる。
現在設定されているバージョンの表示は
pyenv version
さっきのはversionsで複数形だったがこっちは単数形
バージョンがうまく切り替わらないとか、問題が発生した場合
pyenv rehash
今のところ使ったことはない。
#3. 必要に応じてvenv
仮想環境を作る
仮想環境ごとにパッケージを管理できるので、
用途やプロジェクトごとにそれ用のパッケージをインストールできる。
プロジェクトA:pandas1.0、numpy1.8
プロジェクトB:pandas1.2、numpy1.19
を使いたい場合とかに以下のように2つ仮想環境作って、切り替えて使用する。
プロジェクトA -> 仮想環境A
プロジェクトB -> 仮想環境B
仮想環境は任意の場所にフォルダ名(仮想環境名)を指定して作成できる。
python -m venv <任意の名前>
この名前にすることが多い
python -m venv .venv
切り替えるときはその場所のスクリプトを叩く。
仮想環境名/Scripts/activate.bat
// VSCodeでは ".vscode\settings.json" にこのスクリプトが実行されるように設定する
{
"python.pythonPath": ".venv\\Scripts\\python.exe",
/* お好みで
"python.linting.flake8Args": [
"--max-line-length=120",
"--max-complexity","20"
],
"python.dataScience.textOutputLimit": 0,
"editor.mouseWheelZoom": true
*/
}
Anaconda、virtualenv、pipenvなどpythonの環境管理はさまざまありますが、いろいろ試した結果この形に落ち着きました。