私がそのようなディレクトリ構造を持っているとしましょう:
- Documents/
- thesis_program/
- __init__.py
- classes.py
- utils.py
- GE_Test.py
- GE_Test_fail.py
classes.pyとutils.pyには、いくつかのクラスと関数が含まれています。GE_Test.pyとGE_Test_fail.pyには、インポート部分を除いて、まったく同じコードが含まれています。GE_Test.pyで、クラスとutilsを次のようにインポートします。
from utils import execute
from classes import Grammatical_Evolution
GE_Test_fail.pyにいる間、私はクラスとutilsを次のようにインポートします。
from thesis_program.utils import execute
from thesis_program.classes import Grammatical_Evolution
そして、予期せず、私は異なる結果を得る。ここに何か問題がありますか?モジュールを正しくインポートしますか?
特定のシードでランダムな数値を生成するため、結果が同じになるようにすることができます
また、utils.pyにはいくつかの一般的な関数があるため、classes.pyはutils.pyに依存しています。utilsもシステムで使われている名前だと思います。したがって、2番目のケース(GE_Test_fail.py)では、システムutilsが私のutils.pyをオーバーライドします。しかし、それは私には意味がないようです。
classes.pyとutils.pyの完全なソースコードはここから入手できます(何が問題なのかを発見するのに役立つ場合):https ://github.com/goFrendiAsgard/feature-extractor