我有一个包和一个测试包。根据{{3}}的建议,测试应该在不同的目录中。项目的目录树如下:
project\
kernel\
__init__.py
file1.py
file2.py
tests\
__init__.py
test1.py
test2.py
test3.py
我想将kernel
包导入tests
包,因为这是测试file1.py
和file2.py
的地方。另外,我想在import
中使用一个__init__.py
语句,而不是在每次测试中一次又一次地导入kernel
。
我尝试将以下内容添加到__init__.py
中的tests
文件以及test2.py
,test2.py
(一起和单独),但没有成功(第一个没有任何损害,第二个给出语法错误):
import kernel
import ../kernel
我正在使用python2.6。从命令行发生以上所有情况。当我使用Eclipse PyDev时,一切都神奇地起作用。
答案 0 :(得分:2)
您正在使用的相对导入仅在“project”目录是python包时才有效(即其中包含__init__.py
文件)。首先尝试一下,看看它是否适合你。
如果kernel
目录充当将要分发的“包”,那么您可以将tests
目录放在其中并以这种方式执行相对导入。所以它看起来像这样:
project/
kernel/
__init__.py
file1.py
file2.py
tests/
__init__.py
test1.py ...
您可以将tests目录中的内核模块导入为:
from kernel import file1 # if it's installed in the python path/environment
或者:
from .. import file1
# 'import ..file1' might work, but I'm not sure that's syntactically correct