2012-06-04 79 views
2

一些背景信息:
我想運行一個服務器程序python 2.5.1(服務器的編寫和測試版本)。該程序需要OpenSSL庫的一些功能。我從源碼安裝了python 2.5.1,因爲我正在運行的Amazon Linux實例的yum存儲庫沒有我需要的python版本。如何在替代安裝的Python 2.5.1中啓用OpenSSL支持?

當我嘗試運行使用Python 2.5.1服務器我得到下面的導入錯誤:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named OpenSSL 

我知道OpenSSL庫安裝,因爲我可以將它們導入的Python 2.6(版本python由yum安裝)。只是我的python 2.5.1安裝無法看到它們。

我也通過yum安裝了pyOpenSSL,沒有運氣。

+0

您是否嘗試追加Python 2.6的路徑? – ddzialak

+0

您需要針對Python 2.5編譯pyOpenSSL([see here](http://packages.python.org/pyOpenSSL/building-unix.html))。追加Python 2.6路徑將無濟於事。 – schlamar

回答

3

已安裝的python庫特定於特定版本。所以你從yum安裝的pyOpenSSL將用於系統python。你需要爲alt-installed 2.5 python安裝一個單獨的pyOpenSSL實例。

如果你使用python2.5安裝distutils,那麼你會發現你有一個easy_install-2.5,你可以使用:easy_install-2.5 pyopenssl(或類似)。但請注意,也可以安裝easy_install的新版本,覆蓋現有系統python(如果有的話)。使用distutils與現有的軟件包使用easy_install-2.7(如果它是python 2.7)。

確實有道理嗎?基本上,每個python都是獨特的,並且需要它自己的一組庫。相比之下,easy_install是全局安裝的,但是每個python都有一個版本特定的easy_install副本......!

如果你想避免與easy_install混亂,你可以使用virtualenv。爲2.5創建一個新的環境,啓用它,並且可以在那裏安裝pyopenssl(使用環境中的easy_install)。如果你從未習慣過virtualenv,聽起來可能會更復雜,但如果你花一點時間理解它,那麼長期來看,它可能會更好。

相關問題