我有以下文件:
./ElementExtractor.py
./test/ElementExtractorTest.py
在ElementExtractorTest.py
中,我尝试像这样导入ElementExtractor.py
:
import sys
sys.path.append('../')
import ElementExtractor
然而,我得到了:
ImportError: No module named 'ElementExtractor'
怎么没看到?
是否有一种简单的方法可以导入另一个带有相对引用的类?
答案 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
希望这会有所帮助:)