Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

本記事は下記の続編です。しかし、読んでいなくても差し支えありません。
【日記】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してスクリプトを実行できます。
もっと早くこの方法でやればよかった!
おしまい

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away