我有以下内容:
ModuleFolder
|
|-->. ModuleFile.py .
|
'-->. TestsFolder .
|
'---> UnitTest1.py
我正在尝试从父目录导入。在这种情况下,我尝试从测试文件夹运行“UnitTest1.py”,并从其正上方的目录(文件“ModuleFile.py”)导入。
- 我知道已经有很多答案了。 SO Question1,SO Question2,每隔一个 SO Question。我只是找不到“使用../”作为相对导入而不是显式路径。
- 我知道,从 Python 2.5 开始,他们根据提到使用的文档支持“相对导入”,
from .. import *
但我特意尝试这样做,import MyModuleName
这样我可以在单元测试中更加明确,并避免名称混淆/冲突。
我正在做的(它对我有用)如下:
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 问题之一中?(我看到那些都推荐显式路径而不是我采用的相对路径方法)。
其他有用信息:
- 蟒蛇2.6
- 在 Linux 中工作,但也可以轻松跳到 Win。