2012-06-15 241 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