衝撃のわからなさ

わかってません

2024/02/04日報

Pythonのモジュール検索パスについて整理する

The initialization of the sys.path module search path — Python 3.12.1 ドキュメント 読むと._pthを置くとデフォルトパスを上書きできるように思えたが、 実際は._pthで参照するパスが追加される挙動だった。
これではmimic-crossの用途に合わなそうなのでPYTHONPATHをメインに使うことにした。
Ubuntuにaptで入れたものを対象に配置するには/usr/lib/python3.10/dist-packages/python310.pth

カレントディレクトリ、PYTHONPATH、system path、vnev or ディストリのパス というような順番。

$ pwd
/home/impactaky/envtest
$ PYTHONPATH=foo:bar python3 -c "import sys; print(sys.path)"
['', '/home/impactaky/envtest/foo', '/home/impactaky/envtest/bar', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/impactaky/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.8/dist-packages']
$ python3 -m venv env
$ source ./env/bin/activate
$ PYTHONPATH=foo:bar python3 -c "import sys; print(sys.path)"
['', '/home/impactaky/envtest/foo', '/home/impactaky/envtest/bar', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/impactaky/envtest/env/lib/python3.8/site-packages']

mimic-cross実装

mimicx pythonの実装

とりあえず基本的な部分を実装した。
* mimic pythonでhostのpythonがPYTHONPATHとLD_LIBRARY_PATHの特殊化付きで呼び出される * MIMIC_CROSS_DISABLE=1でnativeなpythonが呼び出される

commit: Implemen mimic python basic feature