2010-05-26 102 views
1

我在sys.path中看到一些其他项目,其中1)不存在,2)导致进口问题(具体为Nose)。为什么sys.path显示不存在的项目(这会导致导入问题)?

基本上,我创建了一个包(我们称之为foo),我在多个项目中使用它。我目前工作的项目可以从foo进口一切没有问题,但是当我运行Nose我得到导入错误:

E 
====================================================================== 
ERROR: Failure: ImportError (No module named foo) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    ... 
    File "/path/to/my-project/file.py", line 6, in <module> 
    from foo import * 
ImportError: No module named foo 

---------------------------------------------------------------------- 
Ran 1 test in 0.004s 

FAILED (errors=1) 

当我吐出路径获得:

["/path/to/my-project/foo", 
"/path/to/my-project/foo", 
..., 
"/usr/virtualenvs/my-project/lib/python2.6/site-packages/foo-py2.6.egg", 
...] 

/path/to/my-project/foo不存在。如果我弹出关闭sys.path的前2条,一切正常。

有人可以向我解释为什么这些项目显示出来的时候,实际上唯一应该在列表中的是安装到virtualenv中的那个?

如何阻止未来发生这种情况?是否与foo中的setup.py有关?

回答

0

你有什么在$PYTHONPATH?这会将条目放入sys.path中,即使在virtualenv环境中也是如此。

尝试unset PYTHONPATH在bash(如果你使用bash),然后看看你的sys.path包含的内容。

0

查找路径中任何位置的文件.pth。这些文件(例如,easy-install.pth)可以包含额外的sys.path条目(每行一个)。

相关问题