为什么sys.path显示不存在的项(导致导入问题)?

时间:2010-05-26 15:43:58

标签: python egg

我在sys.path中看到一些其他项目,其中1)不存在,2)导致导入问题(特别是Nose)。

基本上,我已经创建了一个包(我称之为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中弹出前两个条目,一切正常。

有人可以向我解释为什么这些项目出现的时候,真的,列表中应该只有一个是安装在virtualenv中的那个?

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

2 个答案:

答案 0 :(得分:0)

$PYTHONPATH中有什么内容吗?这将在sys.path中输入条目甚至在virtualenv环境中。

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

答案 1 :(得分:0)

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