2014-10-07 87 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

相關問題