这似乎是一个简单的问题,但我没有找到解释我所看到的行为的答案。很难提供一个简单的repro案例,但我基本上有这样的包结构:
a.b.c
a.b.utils
我有一个项目包含a.b.c.
中的文件(我们称之为aux_project
),另一个项目包含a.b.d
,a.b.utils
等文件(称之为main_project
1}})。我正在尝试使用a.b.utils
在第一个项目中的pytest测试中导入tests_require
。这不起作用,因为a.b
由于某种原因来自aux_project/a/b/__init__.pyc
内而不是virtualenv,它会影响其他包(即此a.b
只有一个c
,不是d
或utils
)。这仅在测试环境中发生。在ipython中,我可以正常加载所有包,并且可以从virtualenv正确加载它们。
更奇怪的是,如果我只是删除实际目录,测试会从virtualenv加载pyc并且一切正常(我需要该目录)
蟒== 2.7.9
发生了什么事?
答案 0 :(得分:0)
好的,问题只是cwd被预先安排在PYTHONPATH上。 sys.path.pop(1)
(0是测试目录,由pytest预先添加)解决了这种行为。