服务器更新后无法找到HashLib模块

saz*_*azr 4 python unix dreamhost

我在Dreamhost服务器上运行Python脚本.我们的Python脚本使用Python 2.7 - 我们进行了自定义安装,因为Dreamhost使用Python 2.6.一切都工作正常1年.

Dreamhost星期六做了服务器更新,现在我们的脚本找不到特定的模块 - 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' 
Run Code Online (Sandbox Code Playgroud)

kra*_*thi 5

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

以下方法适用于我.

步骤1.(可能没有必要执行此步骤)

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

$ rm -Rf ~/.pythonbrew
Run Code Online (Sandbox Code Playgroud)

删除了.bashrc中的引用到pythonbrew

第2步.

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

$~/env> virtualenv myNewEnvironment
$~/env/myNewEnvironment/bin> source activate
$ pip freeze
Run Code Online (Sandbox Code Playgroud)

你现在有一个干净的石板,从头开始重建依赖项.至少解决了"import 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)
Run Code Online (Sandbox Code Playgroud)

验证:import hashlib不应该抛出错误

第3步.

pip install Django
pip install MySQL-python
Run Code Online (Sandbox Code Playgroud)

完成/重新检查http://wiki.dreamhost.com/Django中列出的其余步骤 (或适用于您的框架的wiki页面)也可能更安全

现在,这可以让我的网站启动并运行,(但)有一个警告,我现在忽略了,直到我弄清楚:你有未应用的迁移; 在应用之前,您的应用可能无法正常运行.运行'python manage.py migrate'来应用它们.

祝好运!