python导入错误无法导入名称

时间:2014-06-09 11:59:24

标签: python python-2.7

我面临着奇怪的问题,虽然是python的新手。这看起来与几个论坛上已经说过的有点不同。

Directory structure:

Project_Folder
 -- Folder A 
 -- SubFolder A1
 -- Subfolder A2 
 -- Subfolder A3 
      -- Folder A3-1 
         -- XYZ.py 
 -- Subfolder A4 ( this contains utility classes)
       -- A4-1.py
       -- A4-2.py

注意:所有文件夹都包含__init__.py,PYTHON PATH也包含PATH中所有必需的目录。

脚本XYZ.py ...取决于以下2个实用程序类。 Scipts首先在sys.path附加子文件夹A4,因此理想情况下不需要使用A4.A4-1.py而是直接A4-1应该在导入时使用。如下                  来自A4-1.py导入子方法                  来自A4-2.py导入子方法

但这是一个问题......如主题所述。但是,如果我使用A4.A4-1.py

,同样有效

奇怪的是,在已经设置了项目的服务器上是相同的脚本工作。

对Python不熟悉,我需要了解如何从本地机器执行此脚本。 (在导入时不更改或使用模块名称)

另外,我正在使用IDE INtelliJ,我已将A4作为依赖项添加到我的项目中。编译器能够解决它,但执行会导致导入错误...

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

现在已经解决了,问题是PYTHONPATH上类似文件夹的冲突,有一条路径存在实用程序但没有文件存在...删除路径本身后,它在正确的路径上搜索了util文件...

答案 1 :(得分:1)

文件是否真的命名为A4-1.py等?因为这给了我一个SyntaxError而不是一个ImportError;模块名称中显然不允许-符号。这是有道理的,因为它意味着减去。

如果你在同一个项目中导入,我个人会说在大多数情况下,像这样导入

from A4.A4_1 import submethods

比向您的路径添加A4然后直接从A4_1导入更好。

修改

如果你解决了..

,你可以试试你的路径是否有效
import sys,os,time,datetime
testdir = os.path.dirname(os.path.abspath(__file__))
newdir = os.path.abspath(os.path.join(testdir, '../../utilities'))
sys.path.append(newdir)

如果没有,您可以使用

验证是否包含正确的绝对路径
print sys.path

<强> EDIT2

如果您正在检查sys.path,请确保不存在与导入开头匹配的其他目录,但不包含其余目录(例如submethods)。如果有另一个目录A4,那么Python可能使用了错误的目录。

还要确保该名称不是现有的Python模块。 (例如,如果重命名模块,导入的第一部分仍然有效。)