【问题标题】:Why is sys.path showing non-existent items (which cause import problems)?为什么 sys.path 显示不存在的项目(导致导入问题)?
【发布时间】:2011-02-24 06:20:39
【问题描述】:

我在 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 不存在。如果我将前 2 个条目从 sys.path 中弹出,一切正常。

有人可以向我解释为什么这些项目会出现,而实际上,列表中唯一应该出现的项目是安装到 virtualenv 中的项目?

我该如何阻止这种情况在未来发生?和foo中的setup.py有关系吗?

【问题讨论】:

    标签: python egg


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      $PYTHONPATH 有什么东西吗?即使在 virtualenv 环境中,这也会将条目放入 sys.path 中。

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

      【讨论】:

        猜你喜欢
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        相关资源
        最近更新 更多