問題描述
由於Ubuntu 10.04是一個LTS版本,它是否支持python 2.7作為默認的包維護者版本,或者至少在未來有一個python2.7包?
由於它將是最後一個主要的python 2.x版本並且打算長時間保留,我決定使用它。我從源代碼編譯它(當然在構建deps之後),但是現在我發現了一些小問題。
將編譯的python 2.7定義為默認值是否安全,因為有一些分布式應用程序可以在python上運行。
最佳解決思路
不,將2.7定義為Lucid中的默認Python解釋器並不安全。而且我認為將來不會這樣。
-
一個版本中沒有任何軟件的主要版本升級。因此python2.7不會將2.6替換為默認解釋器。這種升級隻在一個版本之間完成 – 尤其是LTS – 隻有所謂的穩定版本升級,即錯誤修正和安全相關的升級。
但是,使用python2.7,將解釋器定義為#!/usr/bin/python2.7
並讓用戶在python源上使用make altinstall
和python2.6安裝它是完全安全的。
次佳解決思路
對於無法升級到Maverick的VPS存在同樣的問題(即使新的LTS圖像也不總是按時提供)。 Marius’ answer做了讓我入門的訣竅,但它應該擴展到:
將PPA添加到您的來源
如果你在我的情況下,運行add-apt-repository
的簡單建議將不適合你。那麽讓我們這樣做old-fashioned方式:
-
打開文件
/etc/apt/sources.list
(您需要root權限;如果您在shell上,這可能意味著運行sudo vim /etc/apt/sources.list
)。 -
一直到文件的底部(如果使用
vim
,按i
切換到插入模式)並添加以下行:deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main
-
保存並退出(在
vim
中:鍵入:wq
)並返回到shell。 -
輸入以下內容(您可以找到正確的密鑰at the PPA;它是”technical details”中斜杠之後的部分 – 確保您選擇正確的密鑰):
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C
-
現在輸入以下內容來更新源列表:
sudo apt-get update
安裝並設置Python 2.7
-
在服務器上打開一個shell並輸入以下內容:
sudo apt-get install python2.7 python2.7-dev
-
要使
easy_install
正常工作,請獲取distribute
bootscrap腳本:curl -O http://python-distribute.org/distribute_setup.py python2.7 distribute_setup.py
-
最後,如果您打算做任何嚴肅的事情,您希望
pip
和virtualenv
正常工作:easy_install-2.7 pip pip-2.7 install virtualenv
建立一個virtualenv
-
為新環境創建文件夾並將其打開:
mkdir my_env && cd my_env
-
創建虛擬環境本身(點表示當前目錄是環境的位置,如果跳過上一步,則用正確的路徑替換它):
virtualenv --no-site-packages --python=python2.7 .
-
激活環境。您會注意到shell提示符更改以反映活動環境:
source bin/activate
-
無論你在這個shell中做什麽,現在都將使用虛擬環境的
bin
文件夾中的腳本和該環境的Python包。請記住,選項--no-site-packages
意味著您從最小的軟件包開始(包括pip
),因此您需要安裝所有需要的軟件包。 -
完成後,停用環境(這是活動環境識別的命令):
deactivate
您還可以通過將-E
選項傳遞到pip
(例如,pip install some-package -E /path/to/virtual/environment
以將some-package
安裝到給定路徑上的虛擬環境)來將軟件包安裝到虛擬環境中。請記住,您將擁有與安裝的不同Python版本對應的幾個不同版本的pip
。
如果你想在虛擬環境之外工作時安裝Python 2.7軟件包,那麽使用pip-2.7
是個好主意(我們傳遞給virtualenv
的--python=python2.7
選項意味著虛擬環境將使用它提供的Python 2.7版本的工具,所以你不要我不得不擔心這一點)。
第三種解決思路
用於Ubuntu 10.04的Python 2.7的There’s a PPA。它可能比從源構建更安全/更方便。
第四種思路
現在libpython2.7.so.1.0
鏈接到我的python2.7等所有看起來都更開心。
我需要弄清楚的最後一件事是mod_wsgi
安裝。如果您隻是發出:
$ apt-get install libapache2-mod-wsgi
然後這將編譯為Python2.6 🙁
$ ldd /usr/lib/apache2/modules/mod_wsgi.so
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00178000)
所以我按照Gork-Zope here提供的說明進行操作。
我終於有了一個工作服務器。謝謝。