LoginSignup
0
1

More than 1 year has passed since last update.

階層化した Pythonのimportでハマった

Posted at

概要

初めてpythonファイルを階層化したとき
import周りでハマった為、自分用に

環境

  • python 3.8.3

フォルダ構成

AAA/
 ├AA.py
 ├BBB/
   ├BB.py
   └CC.py

ソース

AA.py
from BBB.BB import B

class A():
    def __init__(self):
        pass
BB.py
from CC import C

class B():
    def __init__(self):
        pass
CC.py
class C():
    def __init__(self):
        pass

行動したこと

BB.pyとCC.pyを実装して、動作確認した後
階層化して外から呼び出すため、フォルダ:BBBとAA.pyを作成した
AA.pyを実行したら予想外のエラーが出た

発生したエラー

AA.pyのerror
    from CC import C
ModuleNotFoundError: No module named 'CC'

敗因

BB.py単体では実行できたから、import文は間違ってないはず
なんで存在するのに呼び出されないのか

解決

BB.pyのimport文にディレクトリ名を追加する

newBB.py
from BBB.CC import C

とても単純なことですが、実行できないことが意外だったため
自戒として心に刻みます

本当の敗因

フォルダ名,ファイル名,クラス名をすべて同じ名前にして作ったため
解決と同じ手段を取ったのに解決できず、発見が遅れた

フォルダ名とファイル名が同じだと、importで自身を参照し、同じエラーが発生する
本当に戒めるべきなのは、ファイルの命名規則ですね

0
1
0

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
0
1