ImportError:即使我添加到系统路径后,也没有命名模块

时间:2018-01-27 17:52:36

标签: python python-3.x

我有以下文件:

./ElementExtractor.py
./test/ElementExtractorTest.py

ElementExtractorTest.py中,我尝试像这样导入ElementExtractor.py

import sys
sys.path.append('../')
import ElementExtractor

然而,我得到了:

ImportError: No module named 'ElementExtractor'

怎么没看到?

是否有一种简单的方法可以导入另一个带有相对引用的类?

2 个答案:

答案 0 :(得分:3)

我猜这个问题的一般答案应该是。与相对路径混淆意味着路径相对于从您调用它的位置。这就是PYTHONPATH值得拥抱的原因。

让我们假设,您的目录结构如下所示:

./projects/myproject/ElementExtractor.py
./projects/myproject/test/ElementExtractorTest.py

现在,您正在调用您的脚本:

[./projects/myproject]$ python3.5 ./test/ElementExtractorTest.py

您当前的目录是myproject,而ElementExtractorTest.py您正在../sys.path目录添加到./projects/myproject/../。这意味着,./projects(即:test)被有效地添加到您的PYTHONPATH中。那'为什么Python无法找到你的模块。

您的代码可以在[./projects/myproject/test]$ python3.5 ./ElementExtractorTest.py 目录中使用:

..

现在,通过向sys.path添加./projects/myproject/test/../,您有效地将./projects/myproject(即sys.path)添加到std::list,因此可以找到并导入该模块

答案 1 :(得分:-1)

我的文件夹结构

 ./test.py
 ./Data.py

来自test.py

import Data
obj = Data.Myclass()

更新

在你的情况下

from ..ElementExtractor import MyClass

希望这会有所帮助:)