2011-03-30 99 views
1

我一直在python 2.5下開發一個Django站點(無關緊要),直到現在,當我想切換到Python 2.6以確保事情在那裏工作。然而,當我爲2.6設置virtualenv時,pip拋出一個錯誤「ImportError:No module named _md5」。Python 2.6 virtualenv,點投擲「ImportError:沒有模塊名爲_md5」

背景:

  • 我在Ubuntu 10.10小牛運行。
  • 我的python 2.5來自fkrull's deadsnakes repo,一直沒有問題。
  • 我創建virtualenvs與virtualenv <path> --no-site-packages --python=python2.[56]

如果我嘗試從外面的virtualenv導入hashlib,它工作正常:

$ python2.6 
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import hashlib 
>>> 

但裏面拋出同樣的導入錯誤。

我試過重新安裝python2.6,libpython2.6和python2.6-minimal並重新創建我的virtualenv,但我得到了同樣的錯誤。

沒有一個list of potential duplicates沒有幫助,因爲他們要麼使用不同的Linux發行版,要麼簡單地說「重新編譯python」。

想法?

+0

我受到模塊名稱的欺騙。無論如何,_md5是什麼?我不知道任何模塊名稱_md5默認python安裝 – user237419 2011-03-30 14:52:33

+0

從我所瞭解,_md5是一個C庫或C模塊的包裝。 'python shell中import _md5'失敗並帶有ImportError,所以我不知道hashlib是否在某處做了一些魔術。 – eternicode 2011-03-30 14:57:20

+0

是的,這是一個由hashlib內部使用的C模塊(可能以_來命名,以緩解md5模塊棄用的過程);你的問題與升級和virtualenv運行不同的python/dep版本有關;我想你的修復(從頭開始擦除並重新創建venv)是唯一的修復:) – user237419 2011-03-30 15:40:08

回答

3

這個問題最終成爲python2.6的不同版本 - 我的virtualenv(爲了同一目的,我早期實際創建了這個版本)已經安裝了python 2.6.4,而系統的版本高達2.6。 6。

我曾嘗試virtualenv <path> --no-site-packages --python=python2.6 --clear,但顯然--clear並沒有清除舊的蟒蛇斌。

rm -rf -ing env目錄並重新創建它(所以Venv也有2.6.6)解決了這個問題。

+1

我有同樣的錯誤,但在創建virtualenv時...任何想法? – 2011-08-17 09:31:43

0

我有類似的問題。我使用從外部存儲庫檢出的virtualenv。在virtualenv裏面我有32位的python2.6.4,在我的本地系統裏我有64位的python 2.6.6。當我輸入

>>> import hashlib 

我的virtualenv內我收到了同樣的異常(ImportError: No module named _md5)。真正的問題是導入_hashlib模塊。它拋出了一個例外ImportError: libssl.so.0.9.8: wrong ELF class: ELFCLASS64。解決方案是安裝ia32-libs包。

相關問題