本記事は下記の続編です。しかし、読んでいなくても差し支えありません。
【日記】Pythonで上位階層のモジュールを力技によりimportさせたい
かつて__init__.py
と相対インポートによってモジュールをimport出来ていたかに見えた私のPythonスクリプト。
しかしその後、実行する環境とか設定とかによって上手くいったり行かなかったりするのでした。
モジュールの別のインポート方法が無いかなあと探していたところ、sys.path
なるパラメータにパスを格納すればいいことが判明。
しかもこれは、スクリプト内から追加することで開発環境をヘンにいじくり回さずに実現できることも判明。私には嬉しい仕様です✨
私のプロジェクトは次のような構成をしております。
(ルート)
├─code
│ │ main_system.py
│ │
│ ├─library
│ │ ├─analyzers
│ │ │ ├─main_process
│ │ │ │ │ identify_gears_name.py
(その他 省略)
main_system.py
からidentify_gears_name.py
を呼びたい!予備隊!
そう思ったならば、main_system.pyに次の記述を入れましょう。
import sys
sys.path.append('code/library/analyzers/main_process')
import identify_gears_name
# 以下 コード
# identify_gears_name.hogeのようにしてメンバを呼び出せる
なんとこれだけ!カンタン!
私のIDEだとUnable to import 'import_image'
だとかImport "import import_image" should be placed at the top of the module
というpylintが出てきて少し鬱陶しいのですが、問題なくimportしてスクリプトを実行できます。
もっと早くこの方法でやればよかった!
おしまい