我有以下内容:
ModuleFolder
|
|-->. ModuleFile.py .
|
'-->. TestsFolder .
|
'---> UnitTest1.py
我试图从父目录导入内容。在这种情况下,我正在尝试从测试文件夹中运行"UnitTest1.py"文件,并从其上方的目录(文件"ModuleFile.py")进行导入。
- 我知道已经有很多关于这个问题的答案了。SO Question1,SO Question2,每一个其他的SO问题。但我找不到像使用 "../" 这样的相对路径导入方式而不是显式路径。
- 我知道自Python 2.5起,他们支持“相对导入”,并且有文档提到了使用
from .. import *
, 但我特别想做一个import MyModuleName
,这样可以更明确地在unittest中避免名称混淆和冲突。
我正在执行以下操作(并且它对我有效):
sys.path.append("../")
然后从父目录中导入我需要的内容。
- 是的,在父目录中有__init__.py文件。
- 不,我的父路径不是Python路径或环境变量的一部分。
- 为什么我不只是将父路径添加到
sys.path
中呢?因为它是相对的。如果我正在运行/home/workspace/MyModule/unittests/并且我的模块在/home/workspace/MyModule/下,我假设将/home/workspace/MyModule/添加到路径中不一定是正确的,如果一个同事在他自己的目录/home/documents/MyModule下运行它。
我的问题:
这符合Python规范吗?如果不是,有什么问题。有更好的方法吗?还是这真的是RTFM时刻,其中答案在我已经查看的7+ SO问题中的一个中(我看到这些都建议使用显式路径而不是我采取的相对路径方法)。
其他有用的信息:
- Python 2.6
- 在Linux工作,但也可以轻松地切换到Windows。