2010-05-26 99 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條目(每行一個)。

相關問題