はじめに
背景と内容
WindowsマシンでPythonを使ったことはあるけども、利用頻度が少なかったり複数端末持っていたりするとどういうpython環境だったのか忘れがち。環境や仮想環境の復習から入って手間取り、仮想環境を起動したりrequirementsに時間がかかるのは結構ストレス。そうした場合に向けた環境確認や仮想環境作業の個人的備忘メモ・雑記メモ。
構築済みのpython, pip, venv環境を思い出して歩き出すための初歩的な手順について一覧化しただけです。イチからのpython環境構築やvenvの説明等はしません(『参照』のサイトを見れば丁寧に書いてあると思います)。
前提
Windowsでpython.orgのインストーラでインストール済み、コーディングや実行実績がある方を想定します。AnacondaやMicrosoftストア経由でインストールされた方は勝手が違う場合があるかもしれません。
ちなみに当方の環境はWindows10、PowershellでPython3.9, 3.12を実行しています。3.9はWindows上でpathを通して"python"コマンドとして実行できるようにしています。3.12は直近で入れてpathも通していません。以降の手順でも3.9と3.12の両者を確認しつつですがバージョン数自体には特に深い意味や違いはありません。
参照
大体はこの辺に丁寧に書いてあります。
環境の確認
python本体やpipについて現在のマシン環境の確認手順を書き連ねます。
以降の作業はPowershellで実行しています。
pythonの確認
- pythonランチャー(py.exe)でのバージョン確認
pythonランチャーが使えるならWindows上にインストールされた各バージョンのリストを出力できます。
PS D:\work\python3\projects> py --list
-V:3.12 * Python 3.12 (64-bit)
-V:3.9 Python 3.9 (64-bit)
- pathを通したpythonのバージョン確認
Windowsの環境変数PathにPythonのフォルダを通している場合、その配下のバージョンで実行されるということになります。以下の場合、古い3.9.5だけpathを通していたので"python"で実行すると3.12ではなく3.9のバージョンで実行されていることがわかります。
PS D:\work\python3\projects> python --version
Python 3.9.5
[補足]windows側でpathを確認
- [Winキー]+Rに'sysdm.cpl'を入力し「システムのプロパティ」を起動
- 「詳細設定」タブの「環境変数」を選択
- 「Path」をダブルクリックして編集窓を起動
- pythonがインストールされたフォルダのpathの有無を確認
- pythonのソースフォルダ
Pythonの実行ファイルおよびLibs,Scriptsフォルダのある場所も意外と参照したくなります。pyランチャーが使えるなら実行ファイルのリストを出力できます。
PS D:\work\python3\projects> py --list-paths
-V:3.12 * C:\Users\USERNAME\AppData\Local\Programs\Python\Python312\python.exe
-V:3.9 C:\Users\USERNAME\AppData\Local\Programs\Python\Python39\python.exe
個別にpythonのPathを通した場所を知りたいのならば前述のpathの環境変数を見に行くか、pythonのsys.executableで逆引きできます。以下では古いv3.9だけpathを通していたので、3.9の実行フォルダの場所が参照できます。
PS D:\work\python3\projects> python
>>> import sys
>>> sys.executable
'C:\\Users\\USERNAME\\AppData\\Local\\Programs\\Python\\Python39\\python.exe'
pipの確認
- pythonのバージョンを指定してpip
複数pythonバージョンがあるとそれぞれで別々にpipでインストールした外部ライブラリの管理がされています。どのバージョンで何がインストールされているのか明確にしないと後から大混乱を引き起こします(自環境のlatestも後々変わったりしますし)。
以下はlistですがinstallも同様のコマンドでバージョン指定できます。
PS D:\work\python3\projects> py -3.9 -m pip list
Package Version
---------- -------
pip 21.1.1
setuptools 56.0.0
PS D:\work\python3\projects> py -3.12 -m pip list
Package Version
------- -------
pip 24.2
venvの確認
venvで過去に作成したことのある仮想環境の一覧をコマンドの機能として取得する方法は現時点では無いようです。どうしても探している仮想環境があればvenvを用いて作成した仮想環境のキーワードで確認する方法をとりましょう。
ある程度開発やプロジェクトのフォルダが切られていれば、そこで".venv"というフォルダ名で探したり、"activate"のスクリプト名で探せば過去の仮想環境フォルダがヒットするかもしれません。
- Powershellで".venv"フォルダの検索
PS D:\work\python3\projects> Get-ChildItem -Path "./" -Recurse -Directory -Filter ".venv"
ディレクトリ: D:\work\python3\projects\venv_py39
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/09/27 10:35 .venv
ディレクトリ: D:\work\python3\projects\venv_test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/09/27 10:07 .venv
- Powershellで"activate"ファイルの検索
PS D:\work\python3\projects> Get-ChildItem -Path "./" -Recurse -File -Filter "activate"
ディレクトリ: D:\work\python3\projects\venv_py39\.venv\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/09/27 10:35 1986 activate
ディレクトリ: D:\work\python3\projects\venv_test\.venv\Scripts
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2024/09/27 10:07 2074 activate
Pythonの実行手順
バージョン指定して実行
シンプルにWindows上でpyランチャーで実行すると基本はマシンでlatestのバージョンで実行されますが、バージョン指定すればそのバージョンで起動します。当然ですがWindows上でインストールしていないバージョンを指定しても使えません。
PS D:\work\python3\projects> py
Python 3.12.6 ...
>>>
PS D:\work\python3\projects> py -3.9
Python 3.9.5 ...
>>>
PS D:\work\python3\projects> py -3.9 .\hello.py
Hello, World
3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)]
新規の仮想環境を構築する
次に新規に開発フォルダ・仮想環境を切ってもろもろ実行するサンプル手順を書きます。
venv_testという開発のルートフォルダを作成した場合、このルート直下で仮想環境作成コマンドを打ちます。
PS D:\work\python3\projects> mkdir venv_test
PS D:\work\python3\projects> cd .\venv_test\
PS D:\work\python3\projects\venv_test> py -m venv .venv
仮想環境の資材を置くフォルダの名前指定は".venv"でなくてもよいのですが、通常はメタ的な隠しフォルダとして扱ったりgitignoreでgitへ上げないようにしたりするため、この名前を標準にしたほうが良いようです。
仮想環境を起動する
- 初めて起動する場合
仮想環境を利用する前に、PowerShellで仮想環境起動のスクリプトの実行を許可しておきます。PowerShellを起動し、次のコマンドを実行します。これによりローカルのスクリプトを現在のユーザが実行できるようになります。
PS D:\work\python3\projects> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
このコマンドは、一番最初に一回だけでOK。2回目以降は不要です。
- 仮想環境の起動と終了
.venvフォルダ下のactivateするコマンドを打ち、仮想環境を起動します。するとコマンド プロンプトの先頭に (.venv)と表示され、仮想環境内で操作している状態になります。
終了する場合はdeactivateと入力すればOKです。
また、再度同じ仮想環境を起動したければ同じ手順のactivateでOKです。
PS D:\work\python3\projects\venv_test> .\.venv\Scripts\activate
(.venv) PS D:\work\python3\projects\venv_test> py -V
Python 3.12.6
(.venv) PS D:\work\python3\projects\venv_py39\.venv\Scripts> deactivate
Pythonのバージョンを指定してそのバージョンで動作する仮想環境を作ることもできます。
仮想環境ライブラリの構築
まずpipを最新化しておきます。
(.venv) PS D:\work\python3\projects\venv_test> py -m pip install --upgrade pip
次に、一例として仮想環境で"request"ライブラリをインストールしてみます。すると、仮想環境配下のLibフォルダに依存も含め格納されているのがわかります。
(.venv) PS D:\work\python3\projects\venv_test> py -m pip install requests
...
Successfully installed certifi-2024.8.30 charset-normalizer-3.3.2 idna-3.10 requests-2.32.3 urllib3-2.2.3
(.venv) PS D:\work\python3\projects\venv_test\.venv\Lib\site-packages> ls -directory -name
certifi
certifi-2024.8.30.dist-info
charset_normalizer
charset_normalizer-3.3.2.dist-info
idna
idna-3.10.dist-info
pip
pip-24.2.dist-info
requests
requests-2.32.3.dist-info
urllib3
urllib3-2.2.3.dist-info
これらのインストールしたモジュールは仮想環境内でのみ有効で、元のWindowsインストールフォルダのPythonや他の仮想環境から直接利用することはできません。
環境の移行(requirements.txtの利用)
このライブラリを他の環境に移行し同じ前提状態を構築するには、requirements.txtを使います。例えばこの環境で何かpythonプログラムが開発され動作が確認されたとして、別環境になったとしても同じライブラリを過不足なく用意すれば動くはずです。
【どうでもいい補足】正確には「ライブラリをはじめとするプログラム実行に必要な入力要素すべて揃えたら動くはず」ですが、ここでは単純にライブラリをimportしてモジュールを実行するだけのpythonプログラムの話とします。
- ライブラリ一覧の出力
pip freeze コマンドを使うことで、インストール済みの全パッケージのバージョン付きのリストをテキスト形式で取り出すことができます。この情報を"requirements.txt"というファイルに出力することで環境の読み書きを容易にします。
(.venv) PS D:\work\python3\projects\venv_test> python -m pip freeze
certifi==2024.8.30
charset-normalizer==3.3.2
idna==3.10
requests==2.32.3
setuptools==75.1.0
urllib3==2.2.3
wheel==0.44.0
(.venv) PS D:\work\python3\projects\venv_test> python -m pip freeze > requirements.txt
- ライブラリの移行
出力したrequirements.txtを別のまっさらな仮想環境にコピーします。pipのrequirements用のコマンドを打つことでその内容が自動ですべてインストールされます。これにより新規環境でも他のpythonプログラムの実行環境を迅速に整えることができます。
PS D:\work\python3\projects\venv_py39> py -m pip install --upgrade pip
PS D:\work\python3\projects\venv_py39> py -m pip list
Package Version
------- -------
pip 24.2
PS D:\work\python3\projects\venv_py39> py -m pip install -r requirements.txt
...
PS D:\work\python3\projects\venv_py39> py -m pip list
Package Version
------------------ ---------
certifi 2024.8.30
charset-normalizer 3.3.2
idna 3.10
pip 24.2
requests 2.32.3
setuptools 75.1.0
urllib3 2.2.3
wheel 0.44.0