私はPython 3.6.0を使用しており、複数のディレクトリにわたるプロジェクトに問題があります。ディレクトリ構造は次のようになります。別のディレクトリにあるプログラムから関数を実行すると、そのファイルが見つかりません
私のフロントエンドのすべての機能が終了し、ローカルでテストし、/project/frontend
に住んでいると私は今、だから私は変更
/project
に住んでいる私のバックエンドとそれを接続したいされ
/project
/project/frontend
/project/frontend
へと行が含まれていdisplay_page.py
走っ:
sys.path.append('../')
from text_algorithms import process_text
..where text_algorithms.py
が/project
に座って、そこから実行すると正常に動作しますが。 text_algorithms.py
が/project
text_algorithms.py
から実行するか、またはインポートされるときに、それは良い30秒の実行を開始し、その後、問題は決してありません、それは/project
に座っているのピクルスファイルを見つけることができなかったことcomplaing、クラッシュした行が含まれています。
with open('english_vocab.pickle', 'rb') as f:
v = pickle.load(f)
は、だから私はそれが以下のディレクトリからpython frontend/display_page.py
を実行して、「愚か者」私が考えていたが、それは別のエラーを作成し、すなわち、
ModuleNotFoundError: No module named 'text_algorithms'
は、この問題を解決する方法を誰もが知っていますか? - どこからファイルを呼び出すかに応じてファイルを探す場所が変更されないようにする方法。この状況に対処する適切な方法はありますか?
どこからでもファイルを見つける必要があります。
はルートとそのすべてのサブディレクトリで '__init __ py'を持っていますか? – EvgenyKolyakov
私はPython 3.3以降でこれをする必要はありません。https://stackoverflow.com/questions/37139786/is-init-py-not-required-for-packages-in-python-3 – cardamom
'sys.path'ハックを使い、相対パスを使わないでください:' sys.path.append( '../') '。ルート環境変数にルートディレクトリを追加するほうがよいでしょう。仮想環境の中にあるかもしれません。 –