2017-08-17 17 views
1

我有一个名为proja的项目文件夹。它包含几个文件:导入成功的一个文件,但没有在同一目录中的另一个

"__init__.py" 
classa.py 
classb.py 
classc.py 

我有一个名为folderB的proja子文件夹。它也有一个“”init .py“”。该文件夹包含一个py脚本,其中包含以下导入语句。它导入classa,但在classb上失败。

from classa import classa 
from classb import classb 
from class import classc 

如果我从proja运行脚本不要紧:“蟒蛇FolderB中/ imptest.py”或我的CD到FolderB中并运行:“蟒蛇imptest.py”。

它总是失败:“导入错误:没有模块名为ClassB的......”

为什么会从一个文件导入而不是另一个在同一个位置?

+0

我发现它工作,如果我做一个sys.path.append ... 但我不明白为什么它可以在该目录中的一个文件,但不是在同一目录中的另一个文件。如果可能的话,我想避免sys.path.append。谢谢。 –

回答

0

确保没有在文件中的函数或名称classb的方法classb.py

一旦运行这个文件:

import classa 
import classb 
import classc 

如果这个命令的工作,那么文件路径都ok,你应该看看在文件里面。

如果你这样做,它的工作原理检查文件内部classb.py,
否则发布错误。我会帮你的。

+0

谢谢。在验证文件名,类名等正确后,我修改了我的导入语句以包含从我的$ PYTHONROOT的根目录中的完整路径。这工作。 从parentdir.proja进口classc parentdir.proja进口ClassA的 从parentdir.proja进口ClassB的 不过不知道为什么一个文件导入,另一个在同一目录下没有。但是,我有一个工作,适当的方法来完成这项工作。 –

相关问题