2012-06-15 156 views
0

我想在我的項目中使用完整導入名稱(請參閱this question)。在那裏描述的問題已經解決,並且一切工作正常(編輯:如果腳本與execfile啓動)外eclipse和pydev(在Windows上運行),在Linux上(其中已內置jython)ccps。然而日食給我下面的錯誤:python導入行爲奇怪

from Project.gui import gui 
ImportError: No module named gui 

,而我的項目結構inlcudes以下(一切,而不需要的.py是一個文件夾):我啓動Project.Project.py並獲得上述

Project 
    __init__.py 
    gui 
     __init__.py 
     gui.py 
    Project.py 

錯誤。 print sys.path權前的關鍵進口率:

['****\\Root\\Project', '****\\Root', 
*bunch of jars/jython libs*, 
'__classpath__', '__pyclasspath__/'] 

我運行Eclipse和PyDev的。

+0

你能嘗試重命名Project.py到別的東西,然後再試一次導入? – marlboro

+0

我剛剛做到了,那就是解決方案,因爲某種原因,如果它看到一個名稱模塊,它會忽略它。只是爲了破解它:有沒有一種方法可以讓python實際上在兩者都失敗時進行搜索? – ted

+0

「是否有一種方法可以在兩者都失敗的情況下對Python進行搜索」 - 是的。閱讀'try'和'except'。它可能看起來像這樣:'try:import Project; ImporError除外:import Foo as Project' – mgilson

回答

2

因爲\\Root\\Project首先在你的路徑,它會尋找項目文件夾內的第一所以from Project.gui看到Project.py,但後來因爲沒有GUI拋出一個錯誤。

您可以在導入之前暫時放入sys.path.insert(0,"****\\Root")以檢查是否屬於這種情況。但我會從您的PYTHON_PATH中取出****\\Root\\Project

那麼你可以做

from Project import Project 

from Project.gui import gui 
+0

非常感謝您的正確解決方案,我將重新命名該文件,儘管由於我認爲此保護程序/更容易marius建議 – ted