Pythonプロジェクトでは、次のようなディレクトリ構造がありました。
my_project
|_
...
dirA
|_
__init__.py
scriptA.py
dirB
|_
__init__.py
scriptB.py
...
(のは空です)の中に、私は持っています__init__.py:dirA__init__.pydirB
import os
import glob
__all__ = [os.path.basename(f)[:-3] for f in glob.glob(os.path.dirname(os.path.abspath(__file__)) + "/*.py")]
内部scriptB.pyでは、私はします:
from dirA import *
そして、インポートを利用する後続のコードは正常に機能します。
次に、プロジェクト全体(異なるプロジェクトディレクトリ名:)my_project_newを古いディレクトリと同じディレクトリにコピーして貼り付け、scriptA.pyこの新しく複製されたディレクトリのコードを変更し始めます。(注:のディレクトリ構造はmy_project_new上記とまったく同じです)。
変更を加えた後、を実行しようとしましたscriptB.pyが、現在のディレクトリではなく、元のディレクトリからインポートし続けていることがmy_project_newわかりました。どうしてこれなの?dirAmy_projectdirAmy_project_new
さらに、元のmy_projectフォルダを別の場所に移動してscriptB.py、my_project_newもう一度実行しようとしました。dirAその後、完全に識別できませんでした。今何が起こっているのですか?