Python 2.6 virtualenv中,pip抛出“ImportError: No module named _md5”

1 投票
2 回答
11017 浏览
提问于 2025-04-16 14:44

我一直在用 Python 2.5 开发一个 Django 网站(这部分不重要),现在我想换到 Python 2.6,确保在那边也能正常工作。但是,当我为 Python 2.6 设置虚拟环境时,pip 报了一个错,提示“ImportError: No module named _md5”。

背景信息:

  • 我在使用 Ubuntu Maverick 10.10 系统。
  • 我的 Python 2.5 是从 fkrull 的 deadsnakes 仓库 安装的,一直都没问题。
  • 我用 virtualenv <path> --no-site-packages --python=python2.[56] 来创建虚拟环境。

如果我在虚拟环境外面导入 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
>>>

但是在虚拟环境里面就出现同样的 ImportError。

我尝试重新安装 python2.6、libpython2.6 和 python2.6-minimal,并重新创建虚拟环境,但还是出现同样的错误。

网上的 潜在重复问题列表 也没帮上忙,因为那些要么是不同的 Linux 发行版,要么就是简单地说“重新编译 Python”。

有没有什么想法?

2 个回答

0

我遇到过类似的问题。我使用了从外部仓库下载的虚拟环境(virtualenv)。在这个虚拟环境里,我装的是32位的python2.6.4,而在我的本地系统里则是64位的python2.6.6。当我在虚拟环境里输入

>>> import hashlib

时,我收到了同样的错误信息(ImportError: No module named _md5)。真正的问题出在导入_hashlib模块上。它抛出了一个异常ImportError: libssl.so.0.9.8: wrong ELF class: ELFCLASS64。解决这个问题的方法是安装ia32-libs这个包。

3

问题的根源在于我使用的python2.6版本不一样——我之前创建的虚拟环境里已经安装了python 2.6.4,而系统里则是2.6.6。

我尝试过用 virtualenv <path> --no-site-packages --python=python2.6 --clear 来解决这个问题,但显然 --clear 并没有清除掉旧的python文件。

最后,我选择删除环境目录,然后重新从头创建一个新的环境(这样新环境也就用了2.6.6),问题就解决了。

撰写回答