Python 2.6 virtualenv中,pip抛出“ImportError: No module named _md5”
我一直在用 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 个回答
我遇到过类似的问题。我使用了从外部仓库下载的虚拟环境(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
这个包。
问题的根源在于我使用的python2.6版本不一样——我之前创建的虚拟环境里已经安装了python 2.6.4,而系统里则是2.6.6。
我尝试过用 virtualenv <path> --no-site-packages --python=python2.6 --clear
来解决这个问题,但显然 --clear
并没有清除掉旧的python文件。
最后,我选择删除环境目录,然后重新从头创建一个新的环境(这样新环境也就用了2.6.6),问题就解决了。