2016-09-08 8 views
0

私はこれについて多量の質問があることを知っていますが、私のものはかなり特殊であり、インポートがうまくいかない理由はわかりません。 私は、次のフォルダ構造持っている:Pythonのインポートエラー固有のケース

from importmodule.pluginhelper import function1, function2, ... 

機能が__のinit __.py

で定義されています。私はこのようなpluginhelperをインポートしています私のプラグインファイルで

​​

プラグインファイルを実行すると、Windowsマシンでうまく動作します。私は、サーバー上でそれを行うと、私は次の例外を取得:

ImportError: No module named 'importmodule' 

を好奇心旺盛なことは、私はすべてのプラグインからエラーを得るかということ、ですが、1。プラグインの1つでは、インポートが機能しますが、インポートステートメントには違いはありません。

私は両方のマシンでpython 3.5を使用していますが、サーバー上では私のアプリケーションはドッカーコンテナ内にあります。

編集: のいずれかのsys.pathのdidntの仕事の設定:

print("Indexed Path for Package.") 
    sys.path.index(os.getcwd()) 

は、私は可能な問題を発見: 私dockercontainer内のフォルダ構造が異なるようです。私はそれを修正し、それが助けられたら教えてくれるでしょう。まだ同じステートメントを使って1つのプラグインで動作する理由を理解できません。

+0

'pluginhelper import function1、function2、...'を試したことがありますか? –

+0

Pythonがimportmodule.plugins.plugins.plugina.plugina.pluginhelper – PhilipB

+0

で検索しているように見えるので、PyCharmはこれを即座に強調しています。あなたの 'plugins'フォルダに' __init __。py'を追加してPythonでモジュール。 –

答えて

0

質問を読んだ人には同様の問題があるようですので、私の解決策をあなたと共有したいと思います。

pythonpath/syspathにパッケージが含まれていないため、問題が発生しました。私はexecute.pyというスクリプトを使って新しいスレッドでプラグインを呼び出しています。これは私のクラスを多重処理することができないので、cmd経由でmain.pyから呼び出されます。そしてプラグインは../pluginsに置かれているので、pythonはこのパスだけを含んでいます。/importmoduleパスではありません。どういうわけか、それはウィンドウに含まれているようですが、実際に何が起こったのかは分かりません。

私がしたことは、sys.path.appendのものを私のexecute.pyに入れました。プラグインは次のように実行されます:from pluginhelper import scrapeHostnames, hostnamesToIps, getSource。私のIDEは今、インポートステートメントを赤でマークしますが、パッケージを追加しているので動作しています。

関連する問題