Ubuntu 10.04はLTSリリースであるため、デフォルトのパッケージメンテナーバージョンとしてpython 2.7をサポートしますか、それとも少なくともpython2.7パッケージを持っていますか?
それは最後のメジャーpython 2.xリリースであり、長期間その場所にとどまることを目的としているため、使用することにしました。ソースからコンパイルしました(もちろん、depsをビルドした後)が、ときどき小さな問題を見つけます。
Pythonで動作するディストリビューションアプリケーションがいくつかあるため、コンパイル済みのpython 2.7をデフォルトとして定義しても安全ですか?.
いいえ、2.7をデフォルトのPythonインタープリターin Lucidとして定義することは安全とは見なされません。そして、私はそれが将来になるとは思わない。
1つのリリースにソフトウェアのメジャーバージョンアップグレードはありません。
したがって、python2.7はデフォルトのインタープリターとしての2.6を置き換えません。この種のアップグレードは、1つのバージョン間、特にLTS内でのみ行われます。いわゆる安定リリースアップグレード、つまりバグ修正とセキュリティ関連のアップグレードのみがあります。
ただし、python2.7を使用してインタープリターを#!/usr/bin/python2.7
として定義し、ユーザーがpython [2.6]と一緒にpythonソースでmake altinstall
を使用してインストールすることは完全に安全です。
MaverickにアップグレードできないVPSで同じ問題が発生しました(新しいLTSイメージでさえ、時間通りに利用できるとは限りません)。 Mariusの答え は私を始めるためのトリックでしたが、それを拡張する必要があります:
私の状況では、add-apt-repository
を実行するという簡単なアドバイスはうまくいきません。それでは、これを昔ながらの方法でやってみましょう。
ファイル/etc/apt/sources.list
を開きます(ルート権限が必要です。シェルを使用している場合、これはおそらく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
と入力)、シェルに戻ります。
以下を入力します(正しいキーを見つけることができます PPAで ;「技術的詳細」のスラッシュの後の部分です-正しいキーを取得したことを確認してください):
Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DB82666C
ソースリストを更新するには、次を入力します。
Sudo apt-get update
サーバーでシェルを開き、次を入力します。
Sudo apt-get install python2.7 python2.7-dev
easy_install
を機能させるには、distribute
ブートスクラップスクリプトを取得します。
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
新しい環境用のフォルダーを作成して開きます。
mkdir my_env && cd my_env
仮想環境自体を作成します(ドットは、現在のディレクトリが環境の場所であることを示します。前の手順をスキップした場合は、正しいパスに置き換えます)。
virtualenv --no-site-packages --python=python2.7 .
環境をアクティブにします。アクティブな環境を反映するようにシェルプロンプトが変更されていることに気付くでしょう。
source bin/activate
このシェルで何をするにしても、仮想環境の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バージョンを使用するため、心配する必要はありません)。
PPAがあります Ubuntu 10.04用にビルドされたPython 2.7ソースからビルドするよりも安全/便利かもしれません。
これにより、私が抱えていたあらゆる種類の問題が解決されました https://stackoverflow.com/questions/7561221/undefined-symbol-pyobject-nextnotimplemented-error-when-loading-psycopg2-mod 。
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 の指示に従いました。
ようやく動作するサーバーができました。ありがとうございました。
10.04バージョンに関連付けられているプログラムとライブラリの多くを変更する必要があるため、そうは思いません。実際、Ubuntuでの作業の多くは、特定のpythonバージョンを使用して行われます。 pythonに変更すると、多くのシステムファイルが変更されます。
10.10ではpython2.7をインストールするだけでsynaptic/aptitudeから入手できます(3と3.1もインストールできます)が、10.04では10.04に対応するための作業はありません。
10.10のデフォルトはpython 2.6です。答えが肯定的ではなかったが、変更のアイデアを提供したかっただけの場合は申し訳ありません。
編集-Python 2.7を以下のコメントから二重チェックされたため、デフォルトとしてPython 2.6に変更しました。ありがとうございました。