Python3 のモジュールパス(パス/ライブラリパス)の設定方法
Pythonで任意の場所にあるモジュールをインポートしたい場合、そのモジュールのあるディレクトリパスって、CとかだとPATHとかLD_LIBRARY_PATHとかで指定するけど、Pythonってどうすればいいんだろう?
デフォルトのパス
Python3がインストールされているUbuntuなどではすでにいくつかのディレクトリにパスが通っている。
それらは以下で確認ができる。
$ python3
Python 3.5.5 (default, Sep 26 2019, 02:52:15)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-linux', '/usr/lib/python3.5/lib-dynload', '/usr/lib/python3.5/site-packages']
>>>
次にパスの追加方法について述べる。
環境変数PYTHONPATHを使って追加
環境変数 PYTHONPATH にディレクトリパスを指定する。
パスは : (コロン)区切りである。
例)
$ export PYTHONPATH="/home/jitaku/python/lib:$PYTHONPATH"
これで、/home/jitaku/python/lib配下においてあるモジュールがimportできるようになる。
プログラムで sys.path にパスを追加する
sys.path.append() を用いてsys.pathにディレクトリパスを追加する。
(ただしこの場合、先頭にパスを持ってくる方法がわからない。なんかAPIありそうだけど)
$ python3
Python 3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/lib/python3/dist-packages']
>>> sys.path.append('/tmp')
>>> print(sys.path)
['/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/lib/python3/dist-packages', '/tmp']
以上!