LoginSignup
13
25

More than 3 years have passed since last update.

Pythonの自作モジュールをimportしたいならsys.pathを設定しよう

Posted at

本記事は下記の続編です。しかし、読んでいなくても差し支えありません。
【日記】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に次の記述を入れましょう。

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してスクリプトを実行できます。
もっと早くこの方法でやればよかった!
おしまい

13
25
2

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
13
25