Open17

Windowsに快適Python環境入れる!

yusen_ranyusen_ran

WSLではなく直接WindowsにPythonの環境を構築するときの備忘録

個人的に環境としてはpyenv + poetryが快適。
PATHの通り方次第でpythonコマンドがpyenvのPythonを参照してくれず、所望のバージョンのPythonを使用してくれなくてめんどくさい時があるので注意

yusen_ranyusen_ran

Windowsに直接pyenv入れる場合はpyenv-winを入れる

インストール方法はREADMEに書いている以下の4つ

  • pipを使う(すでにPythonを入れている場合)
    • この場合たぶんPATHに注意が必要?
  • zipファイルをダウンロードする
  • gitでリポジトリをcloneする
  • Chocolateyを使う

今回はPython環境を新規に入れる想定
今までChocolateyにお世話になっていたけれど新しいPCでwingetに乗り換えたいので今回はgitで入れる方法を選択

yusen_ranyusen_ran

READMEに書いてある内容そのまま

PowerShellで以下のコマンドを実行していく
Windows PowerShellではコマンドエラーにはならなかったが、環境変数の作成もPATHの追加も行われなかった

git cloneして

git clone https://github.com/pyenv-win/pyenv-win.git "$HOME/.pyenv"

環境変数作って

[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")

PATHを通す

[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

ターミナルを再起動したらちゃんとpyenvコマンドが有効になってる

> pyenv --version
pyenv 2.64.11
yusen_ranyusen_ran

とりあえず適当なバージョンのPythonをpyenvで入れて有効にする

インストール可能なPythonのバージョンを確認

pyenv install --list

インストール

pyenv install <インストールしたいバージョン>

globalで使うPythonのバージョンとして設定

pyenv global <インストールしたバージョン>

これでpythonコマンドが有効になる

> python --version
Python 3.9.6
yusen_ranyusen_ran

次にpoetryを入れていく

以下のコマンドでインストール
この際(多分)pythonコマンドが有効になっている必要があるので上記の手順で先にpyenvでpythonを有効にしておく

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

PATHを通す

[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\AppData\Roaming\Python\Scripts;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

ターミナルを再起動すればpoetryコマンドが有効になっている

> poetry --version
Poetry version 1.1.13
yusen_ranyusen_ran

poetryはデフォルトで仮想環境を一か所のフォルダ下に作成していくが、どの仮想環境がどのプロジェクトのものかよくわからなくなるのと、VSCodeでの使い勝手が変わってくるので、プロジェクト下にそれぞれ仮想環境を作成するように設定しておくのがおすすめ

poetry config virtualenvs.in-project true
yusen_ranyusen_ran

WindowsでPythonを公式のインストーラでインストールすると、Python Launcherがインストールされて、pyenvの代わりみたいな使い方ができるらしい

yusen_ranyusen_ran

Windowsのpyenvは正確にはpyenvからfolkして作られたpyenv-winだから、それよりも公式でついてくるPython Launcherを使う方が筋がいい気がしてきた

yusen_ranyusen_ran

このコマンドでuninstallできた

 (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python - --uninstall
yusen_ranyusen_ran

Python Launcherで複数バージョンのPythonを管理するの、すでにインストール済みの場合便利だけど、旧バージョンをインストールする場合いちいちインストーラーが必要みたいでめんどくさい
その辺はpyenvの方が楽かな

yusen_ranyusen_ran

Python Launcherとpoetryをセットで使いたい場合、まず最初に仮想環境作成

py -3.x -m venv .venv
yusen_ranyusen_ran

wingetでバージョン指定で旧バージョンもインストールできるようになってる
もしくは昔からできた???

Python 3.6をインストールする場合

winget install -i Python.Python.3.6
yusen_ranyusen_ran

Python公式の仮想環境使えばpoetry使わなくてもいい気もしてきた