我在Dreamhost服务器上运行Python脚本。我们的Python脚本使用Python 2.7 - 我们进行了自定义安装,因为Dreamhost使用Python 2.6。一切都运行良好1年。
Dreamhost在周六进行了服务器更新,现在我们的脚本无法找到特定的模块 - MD5。当我们转到import hashlib
时,脚本会输出以下错误。
我需要做些什么来纠正这个问题?
所有Python脚本出错:
/home/user/script.py in ()
import hashlib
hashlib undefined
/home/user/python/lib/python2.7/hashlib.py in ()
# version not supporting that algorithm.
try:
globals()[__func_name] = __get_hash(__func_name)
except ValueError:
import logging builtin globals = <built-in function globals, __func_name = 'md5', __get_hash = <function __get_builtin_constructor /home/user/python/lib/python2.7/hashlib.py in __get_builtin_constructor(name='md5')
return _sha.new
elif name in ('MD5', 'md5'):
import _md5
return _md5.new
elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
_md5 undefined
<type 'exceptions.ImportError': No module named _md5
args = ('No module named _md5',)
message = 'No module named _md5'
答案 0 :(得分:5)
我遇到了完全相同的问题。我在自己的virtualenv中运行Python 2.7。 我试图避免重新安装python并运行Django 1.7应用程序。
以下方法适合我。
步骤1.(此步骤可能没有必要)
我卸载了pythonbrew,因为它在这里说:http://wiki.dreamhost.com/Python pythonbrew已被弃用。 如果你是从头开始这样做pyenv是要走的路,但你不需要重新安装 virtualenv等。开始摆脱pythonbrew。
$ rm -Rf ~/.pythonbrew
将.bashrc中的引用移除到pythonbrew
第2步。
无需重新安装virtualenv。只需创建一个新的虚拟环境
$~/env> virtualenv myNewEnvironment
$~/env/myNewEnvironment/bin> source activate
$ pip freeze
现在你有一个干净的石板,从头开始重建依赖项。 至少是解决&#34; import hashlib&#34;问题。这给你一个干净 python版本正确链接到新的Ubuntu操作系统。
(myNewEnvironment):~> which python
~/env/myNewEnvironment/bin/python
(myNewEnvironment):~> python
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
[GCC 4.6.3] on linux2
installed on Ubuntu 12.04 (which is the new OS)
验证: import hashlib不应该抛出错误
第3步。
pip install Django
pip install MySQL-python
完成/重新检查列出的剩余步骤可能更安全 http://wiki.dreamhost.com/Django(或适用于您框架的wiki页面)
现在,这可以让我的网站启动并运行,但是有一个警告 我现在忽略了,直到我弄清楚: 您有未应用的迁移;在应用之前,您的应用可能无法正常运行。 运行&#39; python manage.py migrate&#39;应用它们。
祝你好运!