web-dev-qa-db-ja.com

"ImportError:No module named ..."自分のモジュールをインポートすると

モジュールをインポートしようとしていますが、ImportErrorが発生し続けます。

PortfolioStatus.pyファイルには、share_data.pyモジュールからshare_dataクラスをインポートする次のコードがあります。
from Shares.share_data import share_data

次のエラーが発生します。

File "/home/lucasamos/FYP/Shares/Communication/PortfolioStatus.py", line 3, in <module>
from Shares.share_data import share_data
ImportError: No module named Shares.share_data

物事をより混乱させるために、これは私のローカルマシンでうまく機能しますが、私はPythonAnywhereでホストしていて、ここでエラーが発生します

私のファイル階層は下の画像に示されています

File hierarchy

前もって感謝します!

6
Lucas Amos

わかりましたので、ようやく解決しました。いくつかの回答に示されているように、ルートフォルダーをシステムパスに追加する必要がありました。

最後に、これは私がやったことです:

import sys
sys.path.append("/home/lucasamos/FYP")
6
Lucas Amos

あなたはこれを試すべきです:

import sys
sys.path.append("../Shares/templates")
import share_data

テンプレートフォルダーをパスのリストに追加しますpythonはモジュールをチェックしています。

10
CoMartel

___init__.py_ファイルを使用して、1つのレベルに空の_manage.py_を追加します。

___init__.py_ファイルをこのように含めると、Pythonインタプリタは、ディレクトリをPythonパッケージとして扱う必要があります。

2
Andriy Ivaneyko

これは、SharesディレクトリがPYTHONPATHにないためと考えられます。

PYTHONPATHの使用に関するこの記事を参照してください: https://users-cs.au.dk/chili/PBI/pythonpath.html

抜粋:

ただし、メインプログラムと同じディレクトリにないモジュールをインポートする必要がある場合がよくあります。上記の例を続けて、〜/ PBI /にあるプログラムを作成していて、mymodule.pyを含める必要があると仮定します。

Pythonインタプリタがモジュールを見つけるためには、どこに検索するかを指示する必要があります。これは、環境変数PYTHONPATHを設定することで実行できます。使用するシェルプログラムによっては(たとえば、 xterm)、これは2つの方法のいずれかで行われます。

バッシュ:

export PYTHONPATH = $ {PYTHONPATH}:/ users/[your username]/PBI/Modules /

0
Jeff