2009-12-15 79 views
7

我有一個virtualenv問題。我使用它regulary,我用它在我的開發機器和幾臺服務器上。但在我嘗試使用的最後一臺服務器上,我遇到了問題。用virtualenv導入錯誤

我用--no-site-packages參數創建了virtualenv,然後我在virtualenv裏面安裝了一些python模塊。我可以確認這些模塊位於virtualenvs站點包內,並且一切看起來都很好。

但是,當我嘗試做:source virtualenv/bin/activate,然後導入其中一個模塊python import modulename我得到一個導入錯誤,說該模塊不存在。這是怎麼發生的?它似乎從來沒有激活,即使它說它做。

有人有關於如何解決這個問題的線索?

回答

14

在這臺機器上是否有一個bash別名在「python」上有效?這將優先於由activate生成的PATH修改,並可能導致使用錯誤的python二進制文件。

嘗試直接運行virtualenv/bin/python(無需激活)並查看是否可以導入模塊。

如果解決了這個問題,你只需要去掉你的python bash別名。

+0

謝謝,僅此而已。無法弄清楚原因是什麼。你現在怎麼做這個永久的變化,所以我不必每次都做venv/bin/python? – espenhogbakk

+0

我只是遇到了同樣的問題。你如何擺脫bash別名? – nutship

+0

好吧,大概別名是在你的bash啓動文件的某個地方用'alias'命令創建的:.bashrc或.bash_profile,或者如果你在一個共享系統上有一些設置在/ etc/bash.bashrc?只需要找到別名正在創建的位置,刪除/註釋該行,並啓動一個新的shell,它應該消失。 –

5

激活虛擬ENV後,嘗試:

$ python 
>>> import sys 
>>> sys.executable 
... 

...看看你是否正在運行預期的可執行文件。

同時檢查:

>>> sys.path 
[...] 
相關問題