我从问题简化了示例,以说明只有 是可能的:
什么解决方案是最好的?这取决于Python 2或3的个人偏好。只有最后一个对所有Python都很好并且通用。这确实是一个有用的问题。
:import xyz.tests.t
:
import sys
print('sys.path = %s' % sys.path) # see that the parent of "xyz" is on sys.path
print("importing xyz.tests")
import xyz.a
# solution A: absolute_import by __future__ (or use Python 3)
#from __future__ import absolute_import
print("importing xyz.a")
# solution B: explicit relative import
#from . import b # and remove "import xyz.b"
# solution C: relative import (not recommended)
#import b # and remove "import xyz.b"
import xyz.b
:print("imported xyz.b")
:print("Imported xyz.xyz !!!")
xyz / .py :空文件
一切可能失败,例如
parent_of_xyz=... # The parent directory of "xyz" - absolute path
cd $parent_of_xyz
python -m xyz.tests.t
PYTHONPATH=$parent_of_xyz/xyz python -m unittest tests
PYTHONPATH=$parent_of_xyz python xyz/tests/t.py
像这样的消息
Imported xyz.xyz !!!
...
ImportError...
无需使用任何子目录即可使其更加简化。
我昨天尝试了许多测试,但是我从不同版本不一致地编写了它。对不起,答案是无法复制的。现在已 。