Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Pythonの"-m"オプションが探しに行っている場所

Pythonの"-m"オプションが検索しているパスは sys.pathで確認できます。

実際のところ

ためしに、REPLでみてみましょう。

import sys
sys.path
#>> ['', '/Users/shuzo_kino/.anyenv/envs/pyenv/versions/3.4.3/lib/python34.zip', '/Users/shuzo_kino/.anyenv/envs/pyenv/versions/3.4.3/lib/python3.4', '/Users/shuzo_kino/.anyenv/envs/pyenv/versions/3.4.3/lib/python3.4/plat-darwin', '/Users/shuzo_kino/.anyenv/envs/pyenv/versions/3.4.3/lib/python3.4/lib-dynload', '/Users/shuzo_kino/.anyenv/envs/pyenv/versions/3.4.3/lib/python3.4/site-packages']

さて、ここで以前書いた記事(参考もと参照)をみてみます。
この記事では、ポートを発見するCLIツールを紹介しました。
そのときの実行内容は以下の通り。

$ python -m serial.tools.list_ports

何やらドット区切りになっているようですが、これは一体どこから読み込んでいるのでしょうか?

上記のパスを頼りに探すと、外部導入パッケージだからかsite-packages以下に入っていました。
あのドットはディレクトリを潜るといった意味合いだったのですね。

$ ls .anyenv/envs/pyenv/versions/3.4.3/lib/python3.4/site-packages/serial/tools/
__init__.py		list_ports_common.py	list_ports_posix.pyc
__init__.pyc		list_ports_common.pyc	list_ports_windows.py
__pycache__		list_ports_linux.py	list_ports_windows.pyc
hexlify_codec.py	list_ports_linux.pyc	miniterm.py
hexlify_codec.pyc	list_ports_osx.py	miniterm.pyc
list_ports.py		list_ports_osx.pyc
list_ports.pyc		list_ports_posix.py