2016-09-08 18 views
0

我知道有很多關於此的問題,但我的具體情況非常明確,而且我不知道爲什麼導入不起作用。 我有以下文件夾結構:Python導入錯誤 - 特定情況

​​

在我的插件文件我正在導入pluginhelper這樣的:

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

的功能在定義__初始化__.py

執行我的插件文件在我的Windows機器上效果很好。當我做它的服務器上,我得到以下異常:

ImportError: No module named 'importmodule' 

的奇怪的是,我做的從每一個插件出現錯誤,但一個。在其中一個插件中導入有效,而導入語句沒有區別。

我在兩臺機器上都使用python 3.5,而在服務器上,我的應用程序在docker容器中。

編輯: 設置sys.path中沒有工作之一:

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

我發現可能出現的問題: 我dockercontainer的文件夾結構似乎是不同的。我會解決它並告訴你它是否有幫助。但我不明白爲什麼它使用同一個語句的一個插件。

+0

你試過'從pluginhelper導入function1,function2,...'嗎? –

+0

PyCharm突出顯示我這一個即時,因爲它似乎在搜索importmodule.plugins.plugina.plugina.pluginhelper – PhilipB

+0

我看到了,然後嘗試在您的'plugins'文件夾中添加'__init __。py'''使Python把它當作一個模塊。 –

回答

0

我想與你分享我的解決方案,因爲任何人閱讀這個問題似乎都有類似的問題。

由於pythonpath/syspath中包含了軟件包werent,因此出現問題。我使用名爲execute.py的腳本在新線程中調用插件。這是通過cmd從main.py調用的,因爲我不能多處理我的類。由於插件位於../plugins,python只包含這個路徑。不是/ importmodule路徑。不知何故,它似​​乎已被列入窗戶,我真的不知道那裏發生了什麼。

我所做的是,我將sys.path.append的東西包含在執行插件的execute.py中,如下所示:from pluginhelper import scrapeHostnames, hostnamesToIps, getSource。我的IDE現在標記爲紅色的導入語句,但它正在工作,因爲我正在附加該軟件包。