つい先日しばくんと飲んだとき、
「pythonの自前のモジュールの管理、どうしてます?」
などと聞かれ
「うーん、from . import xxx とか結局面倒なので、 作業ディレクトリに各種 .py のシンボリックリンク置いといて、 import xxx にしてしまってるなぁ...」
などと申しておりました。
が、後々考えてみると、これでは作業場所がとっちらかって、すっきりしません。
せめて
$ cat foo.py import thr : $ find . ./foo.py ./kon_ut/thr.py ./kon_ut/empty.py :
などと、自前モジュールのディレクトリにまとめておきたいところ...
改めて調べてみると、それに適するちゃんとした方法がありました。
https://docs.python.org/ja/3/library/site.html
$ python -m site --user-site /Users/kondoh/Library/Python/3.6/lib/python/site-packages
ここに表示されてる場所(なければ作る)に、 自前モジュールへのパスを列挙したファイルを、 拡張子.pthのファイル名で置けば良いと。
root権限も不要で、 環境変数PYTHONPATHなどの変更も不要ですね。
例えば
/Users/kondoh/ kon_ut/ empty.py thr.py ezmd/ ezmd.py
な配置だとして、
ezmd.py から import empty で empty.py を参照してるとします。
$ USITE=$(python -m site --user-site) $ mkdir -p $USITE $ echo /User/kondoh/kon_ut > $USITE/kon_page.pth $ echo /User/kondoh/ezmd >> $USITE/kon_page.pth
これで、どこからでも
$ python >>> import empty >>> import ezmd >>>
可能です。
ezmd.pyの実行も
$ cd /tmp $ python -m ezmd < index.txt :
などとして実行可能です。
めでたし。