Open2
Python venv についての調査メモ
venv の sys.prefix の実行結果の比較
venv について: https://docs.python.org/ja/3/library/venv.html
前提
- OS: Windows server
- venv は activate されている
- ネットワークドライブには pushd で移動している
調査背景
複数のネットワークフォルダにまたがってPythonを実行していたが、pip install したはずのモジュールがModuleNotFoundErrorを吐く場合があったので調査した
結果
ネットワークドライブ X に venv を配置しているとき
同一ドライブ上(X)でPythonを実行:
- 'X:\work_dir\venv'
同一ドライブ上ではない場所(Y)でPythonを実行
- 'C:\Users\myname\Python\Python39'
- 仮想環境ではない環境の Python がインストールされている場所が示された
- 別のPython環境が実行されているのでこのパターンが ModuleNotFoundError となったやつ
Cドライブにある venv
Cドライブ内
- 'C:\Users\myname\dev\test\venv'
別ドライブ(ネットワークディレクトリ X)
- 'C:\Users\myname\dev\test\venv'
結果まとめ
Cドライブ(ローカル)上で作成した venv は ローカルでの実行とネットワークドライブでの実行両方で問題がなかった。
ネットワークドライブ(X)上で作成した venv は同一ネットワークドライブ上では問題ないが、別のネットワークドライブ(X以外)上ではうまく環境が呼び出せていなかった。
venv のソースコードを読んでみよう