0

Pythonプロジェクトでは、次のようなディレクトリ構造がありました。

my_project
|_ 
   ... 
   dirA
      |_ 
        __init__.py
        scriptA.py
   dirB
      |_
        __init__.py
        scriptB.py
   ...

(のは空です)の中に、私は持っています__init__.pydirA__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.pymy_project_newもう一度実行しようとしました。dirAその後、完全に識別できませんでした。今何が起こっているのですか?

4

1 に答える 1

2

コメントしますが、評判がよくありません。うまくいけば、私の推測は正しいです。

ファイルはあり__init__.pycますか?たぶんそれがバイトコードをコンパイルするとき、それはインポートへの絶対パスを保存します。.pycファイルを削除してインポートしてみてください。

于 2012-07-27T20:56:52.987 に答える