WindowsでPython開発環境構築

Python
インストール
winget install -s winget -e --id Python.Python.3.11
以下は各パラメータの意味です:
install
: Wingetでパッケージをインストールするためのコマンドです。-s
: 検索キーワードを指定するためのオプションです。ここでは、winget自体の情報を検索するために、winget
を指定しています。-e
: インストール中にエクスプローラーで新しいウィンドウを開かないようにするためのオプションです。--id
: インストールするパッケージの識別子を指定するためのオプションです。ここでは、Python 3のパッケージIDであるPython.Python.3.11
を指定しています。
つまり、このコマンドはwinget
を使ってPython 3.11をインストールし、エクスプローラーウィンドウを開かずに実行するものです。
pip最新版取得
pip
の最新版を取得します。
python.exe -m pip install --upgrade pip
実行結果は以下の通りです。
Requirement already satisfied: pip in c:\users\xxx\appdata\local\programs\python\python311\lib\site-packages (22.3.1)
Collecting pip
Using cached pip-23.1.2-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 22.3.1
Uninstalling pip-22.3.1:
Successfully uninstalled pip-22.3.1
Successfully installed pip-23.1.2
Pyenv
pyenvは、ユーザーごとにグローバルなPythonのバージョンを変更したり、プロジェクトごとに異なるPythonのバージョンをサポートしたりすることができます。さらに、環境変数を使ってPythonのバージョンを上書きすることもでき、複数のPythonバージョンからコマンドを検索することができます。また、Python自体に依存しないため、シェルにロードする必要がなく、仮想環境の管理は行わずに自動化することもできます。
インストール
pip install pyenv-win --target $HOME\\.pyenv
実行結果は以下の通りです。
Collecting pyenv-win
Downloading pyenv_win-3.1.1-py3-none-any.whl (3.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.6/3.6 MB 7.1 MB/s eta 0:00:00
Installing collected packages: pyenv-win
Successfully installed pyenv-win-3.1.1
[notice] A new release of pip available: 22.3.1 -> 23.1.2
[notice] To update, run: python.exe -m pip install --upgrade pip
アプリ実行エイリアスの設定
PYENV と PYENV_HOME を環境変数に追加
環境変数 ‘PYENV’ と ‘PYENV_HOME’ を設定しています。環境変数は、システム全体で利用できる設定値で、プログラムやスクリプトが情報を共有するために使用されます。
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
-
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
:このコマンドは、環境変数 ‘PYENV’ を設定しています。この変数は、ユーザーのプロファイルディレクトリ内の
.pyenv\pyenv-win
フォルダへのパスを格納します。これにより、プログラムがこのディレクトリを簡単に参照できるようになります。 -
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
:このコマンドは、環境変数 ‘PYENV_HOME’ を設定しています。この変数も、ユーザーのプロファイルディレクトリ内の
.pyenv\pyenv-win
フォルダへのパスを格納します。‘PYENV_HOME’ は、一部のプログラムやスクリプトが pyenv-win のインストール場所を特定するために使用する環境変数です。
いずれのコマンドも、"User"
を指定しているため、これらの環境変数は現在のユーザーにのみ適用されます。これらのコマンドを実行することで、システムは pyenv-winの場所を簡単に特定できるようになります。
pyenv コマンドにアクセスできるようにする
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
環境変数 ‘path’ を更新します。具体的には、ユーザーのプロファイルディレクトリ内にある pyenv-winに関連する2つのディレクトリをパスに追加しています。これにより、システムがこれらのディレクトリ内の実行可能ファイルを見つけられるようになります。
コマンドの各部分の説明:
-
[System.Environment]::SetEnvironmentVariable
: PowerShellで環境変数を設定するためのメソッドです。 -
'path'
: 環境変数の名前(この場合は ‘path’)を指定します。 -
$env:USERPROFILE + "\.pyenv\pyenv-win\bin;"
: ユーザーのプロファイルディレクトリ内の.pyenv\pyenv-win\bin
というディレクトリへのパスを作成し、セミコロンで区切ります。これにより、次のディレクトリが追加されます。 -
$env:USERPROFILE + "\.pyenv\pyenv-win\shims;"
: ユーザーのプロファイルディレクトリ内の.pyenv\pyenv-win\shims
というディレクトリへのパスを作成し、セミコロンで区切ります。これにより、次のディレクトリが追加されます。 -
[System.Environment]::GetEnvironmentVariable('path', "User")
: 現在のユーザーのpath
環境変数の値を取得します。 -
"User"
: 環境変数が適用されるスコープを指定します。この場合は、現在のユーザーにのみ適用されます。
コマンド全体では、現在のユーザーの path
環境変数に、pyenv-winに関連する2つのディレクトリを追加しています。これにより、pyenv-winを使用してインストールされたPythonバージョンや、それに関連するツールに簡単にアクセスできるようになります。
バージョン確認
いままで開いていたターミナルを閉じて、再度開きなおし次のコマンドを実行します。
pyenv --version
Pyenv の shims を再構成
shims
は、pyenvの仕組みの一部で、複数のPythonバージョン間で切り替えを簡単に行うために使用されます。shims
は、Pythonインタープリターや関連ツール(pipなど)への小さなプロキシ(中継)スクリプトです。これらのスクリプトは、実行時に適切なPythonバージョンやツールを呼び出す役割を果たします。
pyenv
を使用すると、システム全体やプロジェクトごとに異なるPythonバージョンを簡単にインストール・管理・使用できます。shims
は、異なるPythonバージョン間で切り替える際に、常に正しいバージョンのPythonやその関連ツールを参照するために役立ちます。
再構成が必要になる理由は、新しいPythonバージョンがインストールされたときや、デフォルトのPythonバージョンが変更されたときに、shims
が適切なバージョンを参照できるようにするためです。通常、pyenv
ではコマンドpyenv rehash
が使われて、shims
を再構成します。このコマンドは、現在インストールされているPythonバージョンに基づいてshims
を更新し、正しいPythonバージョンやツールを参照できるようにします。
任意のバージョンインストール
pyenv
コマンドで使う予定のバージョンをインストールします。
pyenv install --list
python install 3.10.5
実行結果は以下の通りです。
C:\Users\xxx\AppData\Local\Programs\Python\Python311\python.exe: can't open file 'C:\\Users\\xxx\\install': [Errno 2] No such file or directory
PS C:\Users\xxx>
PS C:\Users\xxx>
PS C:\Users\xxx>
PS C:\Users\xxx> pyenv install 3.10.5
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Downloading] :: 3.10.5 ...
:: [Downloading] :: From https://www.python.org/ftp/python/3.10.5/python-3.10.5-amd64.exe
:: [Downloading] :: To C:\Users\xxx\.pyenv\pyenv-win\install_cache\python-3.10.5-amd64.exe
:: [Installing] :: 3.10.5 ...
:: [Info] :: completed! 3.10.5
再構成
ホームディレクトリで以下のコマンドを実行します。
pyenv rehash
実行後は何も出力されません。
Poetry
PoetryはPythonプロジェクトの依存関係を管理するためのツールで、必要な依存関係を宣言して自動的にインストールできます。開発チーム全員が同じパッケージとバージョンを使用することで、互換性の問題を防止し、プロジェクトでの協力が容易になります。
インストール
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python
環境変数設定
ユーザー環境変数のpath
に以下の内容を追加します。
%APPDATA%\Python\Scripts
正しく設定できると以下のように表示されます。
参考
2022年度版Python環境構築徹底解説 - Qiita
https://qiita.com/kjm_nuco/items/733d67ff39acb41839f2#pyenv
Windows 10でPython環境構築 (wingetとPythonランチャー) - Umi Uyuraのブログ
https://umi-uyura.hatenablog.com/entry/2021/12/14/234132
【pyenv-win】pyenv のインストールと実行 - Qiita
https://qiita.com/probabilityhill/items/9a22f395a1e93206c846
Poetryをwindows10にinstallしてみた
https://zenn.dev/pejpo/articles/5080662546764c