【发布时间】:2013-11-09 05:28:46
【问题描述】:
我有以下几点:
ModuleFolder
|
|-->. ModuleFile.py .
|
'-->. TestsFolder .
|
'---> UnitTest1.py
我正在尝试从父目录导入。在这种情况下,我尝试从测试文件夹运行“UnitTest1.py”,并从其正上方的目录(文件“ModuleFile.py”)导入。
- 我知道已经有很多答案了。 SO Question1、SO Question2、Every Other 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 问题之一中? (我看到那些都推荐显式路径而不是我采用的相对路径方法)。
其他有用信息:
- Python 2.6
- 在 Linux 中工作,但也可以轻松跳到 Win。
【问题讨论】:
-
最好开始使用您的代码作为
package并导入所有内容。相对导入就无关紧要了。
标签: python