當前位置: 首頁>>技術問答>>正文


將來python2.7將可用於10.04嗎?

, , , ,

問題描述

由於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方式:

  1. 打開文件/etc/apt/sources.list(您需要root權限;如果您在shell上,這可能意味著運行sudo vim /etc/apt/sources.list)。

  2. 一直到文件的底部(如果使用vim,按i切換到插入模式)並添加以下行:

    deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main 
    deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main 
    
  3. 保存並退出(在vim中:鍵入:wq)並返回到shell。

  4. 輸入以下內容(您可以找到正確的密鑰at the PPA;它是”technical details”中斜杠之後的部分 – 確保您選擇正確的密鑰):

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C
    
  5. 現在輸入以下內容來更新源列表:

    sudo apt-get update
    

安裝並設置Python 2.7

  1. 在服務器上打開一個shell並輸入以下內容:

    sudo apt-get install python2.7 python2.7-dev
    
  2. 要使easy_install正常工作,請獲取distribute bootscrap腳本:

    curl -O http://python-distribute.org/distribute_setup.py
    python2.7 distribute_setup.py
    
  3. 最後,如果您打算做任何嚴肅的事情,您希望pipvirtualenv正常工作:

    easy_install-2.7 pip
    pip-2.7 install virtualenv
    

建立一個virtualenv

  1. 為新環境創建文件夾並將其打開:

    mkdir my_env && cd my_env
    
  2. 創建虛擬環境本身(點表示當前目錄是環境的位置,如果跳過上一步,則用正確的路徑替換它):

    virtualenv --no-site-packages --python=python2.7 .
    
  3. 激活環境。您會注意到shell提示符更改以反映活動環境:

    source bin/activate
    
  4. 無論你在這個shell中做什麽,現在都將使用虛擬環境的bin文件夾中的腳本和該環境的Python包。請記住,選項--no-site-packages意味著您從最小的軟件包開始(包括pip),因此您需要安裝所有需要的軟件包。

  5. 完成後,停用環境(這是活動環境識別的命令):

    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。它可能比從源構建更安全/更方便。

第四種思路

這解決了我遇到https://stackoverflow.com/questions/7561221/undefined-symbol-pyobject-nextnotimplemented-error-when-loading-psycopg2-modu的各種問題。

現在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提供的說明進行操作。

我終於有了一個工作服務器。謝謝。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/6883.html,未經允許,請勿轉載。