python模块路径如何转换为文件系统路径?

时间:2016-07-15 21:13:58

标签: python pytest python-module

这似乎是一个简单的问题,但我没有找到解释我所看到的行为的答案。很难提供一个简单的repro案例,但我基本上有这样的包结构:

a.b.c a.b.utils

我有一个项目包含a.b.c.中的文件(我们称之为aux_project),另一个项目包含a.b.da.b.utils等文件(称之为main_project 1}})。我正在尝试使用a.b.utils在第一个项目中的pytest测试中导入tests_require。这不起作用,因为a.b由于某种原因来自aux_project/a/b/__init__.pyc内而不是virtualenv,它会影响其他包(即此a.b只有一个c ,不是dutils)。这仅在测试环境中发生。在ipython中,我可以正常加载所有包,并且可以从virtualenv正确加载它们。

更奇怪的是,如果我只是删除实际目录,测试会从virtualenv加载pyc并且一切正常(我需要该目录)

蟒== 2.7.9

发生了什么事?

1 个答案:

答案 0 :(得分:0)

好的,问题只是cwd被预先安排在PYTHONPATH上。 sys.path.pop(1)(0是测试目录,由pytest预先添加)解决了这种行为。