コンテンツにスキップ

Top

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']

以上!