2014-10-07 50 views
4

我在Dreamhost服务器上运行Python脚本。我们的Python脚本使用Python 2.7 - 我们进行了自定义安装,因为Dreamhost使用Python 2.6。一切正常工作1年。在服务器更新后无法找到HashLib模块

Dreamhost做了一个服务器更新yesturday,现在我们的脚本无法找到一个特定的模块 - MD5。当我们转到import hashlib时,脚本会输出下面的错误。

我需要做些什么来纠正这个问题?

  • 我应该重新安装Python 2.7吗?
  • 我应该重新安装Pip和Easy_Install吗?
  • 我应该重新安装VirtualEnv吗?
  • 还有别的你推荐我做的吗?从所有的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

很可能是libssl被更新了,也许有些参考文献被打破了。运行'ldd/path/to/your/python2.7'来查看它是否正确链接到libssl。真的,至少你应该首先尝试重新安装python2.7。或者,检查dreamhost现在使用的基本系统是否带有python2.7。 – metatoaster 2014-10-07 02:30:38

回答

5

我有完全相同的问题。我在自己的virtualenv中运行Python 2.7。 我试图避免重新安装python并运行Django 1.7应用程序。

以下方法适用于我。

STEP 1(这一步可能没有必要)

我卸载pythonbrew因为这里说的:http://wiki.dreamhost.com/Python 是pythonbrew已被弃用。 如果你是从头开始做这件事pyenv是要走的路,但你不需要重新安装virtualenv等。刚刚摆脱pythonbrew开始。在.bashrc中

$ rm -Rf ~/.pythonbrew 

删除引用pythonbrew

STEP 2.

无需重新安装的virtualenv。只需创建一个新的虚拟环境

$~/env> virtualenv myNewEnvironment 
$~/env/myNewEnvironment/bin> source activate 
$ pip freeze 

您现在拥有一个干净的平台,从头开始重建依赖关系。 至少是解决“导入hashlib”问题。这给你一个干净的 版本的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) 

验证: 进口hashlib不应该抛出错误

STEP 3。

pip install Django 
pip install MySQL-python 

它也可能是更安全的完成/复检所列出来的剩余步骤 http://wiki.dreamhost.com/Django(或相应的wiki页面为你的框架)

现在这个让我让我的网站建立和运行,(但是)现在我忽略了一个警告 ,直到我找出更多: 您有未应用的迁移;在应用之前,您的应用可能无法正常工作。 运行'python manage.py migrate'来应用它们。

祝你好运!

+1

我会添加一个警告,对我来说,virtualenv _itself_也会因为md5错误而失败,直到我从路径中删除了我的自定义python。 – clearf 2014-10-10 05:21:49