2017-09-18 16 views
-1

これを重複としてマークする前に、全体的な問題を読んでください。通常のsys.pathインポートエラーではありません。珍しいPythonのインポートエラー

これは私が2台の異なるマシンで働いています

root 
|_moduleDir1 
| |_ myModule1.py 
| |_ __init__.py 
|_ moduleDir2 
    |_ myModule2.py 
    |_ __init__.py 

インポートしようとしているモジュールのディレクトリ構造です。私のスクリプトはうまく動いてしまい、もう片方にインポートエラーが出ます。最初は環境問題だけだと思っていましたが、何か他のことが起こっていると思います。失敗したマシンにmyModule1.pyをインポートするスクリプトを実行すると、次のインポートエラーが発生します。

import moduleDir1.myModule1 

ImportError: No module named myModule1 

私はそれがPATHの問題またはのsys.pathの問題であるとは考えていない理由は、私は適切な環境変数にルートディレクトリを追加したことであると私は

import moduleDir2.myModule2 

上記追加したときスクリプト内のmyModule1のインポートでは、インポートエラーが発生しないので、rootがsys.pathにあることがわかっているか、エラーが両方発生します。また、他のマシンでうまく動作するので、init.pyの問題ではないと思います。両方のマシンがWindows 10を実行しています。

私は困惑しており、何も捜索しておらず、運がないとテストしました。私が見つけることができるのは、init.pyまたはsys.pathの問題で、私の問題の解決策ではない投稿です。私が同じ親ディレクトリの下にいるときに、他のモジュールではなく、あるモジュールでインポートエラーが発生している理由についての提案や考えは高く評価されます。

+3

'myModule1'をインポートしようとするコードを表示し、完全なエラーメッセージを表示してください。 – BrenBarn

+0

'import moduleDir1'と' print(moduleDir1 .__ file __) 'だけを試してください。出力は期待通りですか? 'sys.path'に先に' moduleDir1'という別のディレクトリがあり、 'moduleDir1.py'というファイルがあれば、それは代わりにインポートされ、' myModule1'というサブモジュールがない場合は、このエラーが発生します。 – BrenBarn

+0

あなたは頭の爪を打つ!システムのどこかに同じ名前の別のモジュールがあり、それがインポートされています。本当にありがとう!あなたはどれくらいの時間を知っている私を救ったのですか? – jerrik

答えて

0

理由の1つは、インポートエラーをスローする2番目のマシンがディレクトリの読み取りアクセス権を持っていない可能性があります。ディレクトリのアクセス許可を確認してください。

+0

これは良い考えですが、二重チェックの後、2番目のマシンユーザーには、関連するすべてのディレクトリに対する読み取りアクセス権があります。 – jerrik

+0

は1つのことをすることができます。 2番目のマシンでPythonコードを使用して、場所にファイルを作成するための小さなコードを書くだけです。このファイルが作成されたら、モジュールにアクセスする必要があります。 – PramodG

関連する問題