2011-03-30 63 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包。

相关问题