たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

Pythonモジュール/パッケージの闇にのまれないために

module resolution (モジュール解決)

  1. find build-in module
  2. find from sys.path directory list

sys.pathのデフォルトlistは

  • 実行スクリプトの場所 || cd
  • PYTHONPATH
  • インストールごとのデフォルト (?)

パッケージ / package

Python用語.
モジュールの詰め合わせ、が大雑把な意味あい.

パッケージ内参照

  • absolute import: パッケージ名をrootとしたimport
  • relative import: 各モジュールから相対的にみたimport

同じディレクトリ内のmodule名を書くだけじゃダメ

同じディレクトリ内の兄弟モジュール (e.g. sibling.py) をimportするために

import sibling

はダメ.
sys.pathを全てなぞるので、同名の別moduleをimportする危険があるため、禁止になったそう.
正しくrelative importするか、absolute importで書くこと.
[Python] importの躓きどころ - Qiita