LoginSignup
14
8

More than 5 years have passed since last update.

sys.pathの最初の要素

Posted at

sys.pathは、Pythonがインポートするモジュールを検索するパスのリストですが、コマンドラインから起動するスクリプトの指定方法によりsys.pathの最初の要素が変わります。

例えば、カレントディレクトリ/home/user1に、test.pyとPython packageディレクトリtestがあるとします。

test.py
test/
    __init__.py
    __main__.py

test.pytest/__main__.pyには、sys.pathを出力する下記のコードが入っています。(Python3)

import sys
print(sys.path)

まず、スクリプトファイルをコマンドライン引数としてPythonを起動した場合、sys.path[0]は、そのスクリプトがあるディレクトリがセットされます。

$ python test.py
['/home/user1', ...]

-mオプションで実行するモジュール(パッケージ)を指定した場合、sys.path[0]は、空白列''がセットされます。これはカレントディレクトリと解釈されます。

$ python -m test
['', ...]

引数無しで、Interactive modeでPythonを起動した場合や、-cオプションで実行するコードを与えた場合も、同様にsys.path[0]には、空白列''がセットされます。

$ python
>>> import sys; print(sys.path)
['', ...]
$ python -c "import sys; print(sys.path)"
['', ...]

__main__.pyを含むディレクトリを実行するスクリプトに指定した場合、sys.path[0]は、そのディレクトリの名前がセットされます。

$ python test
['test', ...]

参考

14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8