首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从父目录导入Python

从父目录导入Python
EN

Stack Overflow用户
提问于 2013-10-30 04:45:15
回答 6查看 34.2K关注 0票数 21

我有以下几点:

代码语言:javascript
复制
         ModuleFolder
              |
              |-->. ModuleFile.py .
              |
              '-->. TestsFolder .
                         |
                         '---> UnitTest1.py

我正在尝试从父目录导入。在本例中,我尝试从测试文件夹运行"UnitTest1.py“,并从它的上一个目录(文件"ModuleFile.py")导入。

  • 我知道这个问题的答案已经很多了。SO Question1SO Question2Every Other SO Question。我只是找不到"using ../“作为相对导入,而不是显式路径。
  • 我知道从Python2.5开始,他们支持“相对导入”,因为文档中提到了from .. import *的用法,但我特别尝试做一个import MyModuleName,这样我可以在单元测试中更明确,并避免名称的损坏/冲突。

我正在做的事情(它对我来说是有效的)如下:

代码语言:javascript
复制
sys.path.append("../")

然后从父目录导入所需的内容。

  • 是,父目录中有__init__.py,
  • 否,我的父路径不是Python路径或环境变量
  • 的一部分为什么我不直接将父路径添加到sys.path中?因为它是相对的。如果我从/home/workspace/MyModule/ unittest/运行,而我的模块在/home/workspace/MyModule/下,我假设,如果同事在他自己的/home/documents/MyModule.

目录下的机器上运行/home/workspace/MyModule/,那么将/home/workspace/MyModule/添加到路径不一定是真的

我的问题是:

这是正确的Python吗?如果不是,这有什么问题?有没有更好的方法?或者,这真的是一个RTFM时刻,答案就在其中一个7+中,所以我已经看过了?(我看到所有人都建议使用显式路径,而不是我采用的相对路径方法)。

其他有用的信息:

  • Python2.6
  • 可以在Linux上工作,但也可以很容易地跳过,赢得比赛。
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-10-30 05:44:03

不要从测试文件夹中运行测试。从项目的根目录运行它,即模块文件夹。你应该很少需要使用sys.pathPYTHONPATH,当你这样做的时候,你要么给其他库带来了错误,要么让你的用户的生活变得更加艰难。

代码语言:javascript
复制
python -m TestsFolder.UnitTest1

如果您使用像py.test这样的测试运行器,您只需从您的签出的根目录运行py.test,它就会为您找到测试。(假设您将测试命名为类似于test_unit1.py的名称。您当前的命名方案有点不规范。;))

票数 28
EN

Stack Overflow用户

发布于 2013-10-30 05:27:25

最好在sys.path生成时插入相对路径,如下所示:

代码语言:javascript
复制
import sys
sys.path.insert(0, '../')
票数 5
EN

Stack Overflow用户

发布于 2013-10-30 04:56:22

我的建议是:

不要装聪明,做你该做的事。例如,确保您的模块和包位于Python路径中的某个位置。

最简单的方法是在用来执行脚本的shell中设置环境变量PYTHONPATH:

代码语言:javascript
复制
$ export PYTHONPATH=/the/directory/where/your/modules/and/packages/are
$ cd /the/directory/where/your/unit/tests/are
$ python test1.py
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19668729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档