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")
  1. [System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User"):

    このコマンドは、環境変数 ‘PYENV’ を設定しています。この変数は、ユーザーのプロファイルディレクトリ内の .pyenv\pyenv-win フォルダへのパスを格納します。これにより、プログラムがこのディレクトリを簡単に参照できるようになります。

  2. [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つのディレクトリをパスに追加しています。これにより、システムがこれらのディレクトリ内の実行可能ファイルを見つけられるようになります。

コマンドの各部分の説明:

  1. [System.Environment]::SetEnvironmentVariable: PowerShellで環境変数を設定するためのメソッドです。

  2. 'path': 環境変数の名前(この場合は ‘path’)を指定します。

  3. $env:USERPROFILE + "\.pyenv\pyenv-win\bin;": ユーザーのプロファイルディレクトリ内の .pyenv\pyenv-win\bin というディレクトリへのパスを作成し、セミコロンで区切ります。これにより、次のディレクトリが追加されます。

  4. $env:USERPROFILE + "\.pyenv\pyenv-win\shims;": ユーザーのプロファイルディレクトリ内の .pyenv\pyenv-win\shims というディレクトリへのパスを作成し、セミコロンで区切ります。これにより、次のディレクトリが追加されます。

  5. [System.Environment]::GetEnvironmentVariable('path', "User"): 現在のユーザーの path環境変数の値を取得します。

  6. "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

Next Post 前の記事
No Comment
コメントする
comment url