異なるバージョンのPythonを使用する


21

背景

さまざまなpythonバージョンで実行する必要があるpythonプログラムを開発しているため、コンピューターにさまざまなバージョンのpythonをインストールしました。

私はFC 13を使用しているため、Python 2.6がとにプリインストールされ/usr/bin/python2.6てい/usr/lib/python2.6ます。

ソースからpython 2.5をインストールし、物事をきれいに保つために--prefix=/usr、pythonを/usr/bin/python2.5andにインストールするオプションを使用しました/usr/lib/python2.5

さて、pythonプロンプトを実行すると、バージョン2.5を使用しています。ただし、インストールに問題があります。

パッケージ管理

easy_installを使用すると、パッケージは常ににインストールされ/usr/lib/python2.6/site-packages/ます。setuptoolsPython 2.5用の.egg をダウンロードしてインストールしようとしましたが、エラーが発生します。

/usr/lib/python2.5/site-packages does NOT support .pth files

python2.5は私のPYTHONPATHにないようです。デフォルトのインストールではPYTHONPATHに自分自身が追加されると思っていましたがecho $PYTHONPATH、promt に書き込むと、空の行が表示されます。

回答:


20

複数のPythonバージョンをインストールするための推奨される方法は、ソースからそれぞれをインストールすることです-それらは喜んで共存します。その後、適切なインタープリターでvirtualenvを使用して、必要な依存関係をインストールできます(pipまたはeasy_installを使用)。ソースから複数のインタープリターを簡単にインストールするための秘Theは、以下を使用することです。

sudo make altinstall

より一般的な「sudo make install」の代わりに。これにより、実行可能ファイルにバージョン番号が追加されるため(python-2.5、python-2.6、python-3.2など)、システムバージョンのPythonとの競合が防止されます。


2
Altinstall + virtualenv = python開発nirvahna。ありがとう!
アレックス

13

これは、分離されたPython環境を作成するための非常に人気のあるツールであるvirtualenvに最適なアプリケーションのようです。これは、Pythonのバージョンを指定するサンプルコマンドです

$ virtualenv --python=/usr/bin/python2.6 myvirtualenv

virtualenvこの場合の解決策はないと思います。私の答えをご覧ください。
ピョートルドブロゴスト

5

を使用するとeasy_install、パッケージは常に /usr/lib/python2.6/site-packages/

これは、distutilsがインストールされているすべてのスクリプトにshebang行を追加するためです。あなたが実行している場合はeasy_install、スクリプトを直接は、それが行(shebang行による)と一緒にインストールされたインタプリタで実行されます。どちらeasy_installが実行されているかはあなたのPATHnotに依存しますPYTHONPATH。Python 2.5インスタンスにパッケージをインストールする場合はeasy_install、使用するPythonインタープリターを指定して実行する必要があります。

/usr/bin/python2.5/python easy_install ...

厳密に言えば、virtualenvここでは実行できません。ベース Python のコンテキストで作成する必要があるため、実行とまったく同じ問題easy_installです。それが--python引数のvirtualenv目的です。何らかの理由でeasy_install類似の引数を提供しないため、上記のように特定のPythonインタープリターで実行する必要があります。


ここでの最初の回答であり、最初のネクロマンサーバッジも願っています:)
ピオトルドブロゴスト

非常に良い説明、ありがとう!ネクロマンサーバッジも獲得;)
アレックス

2

私もFedora 13を使用してPYTHONPATHいますが、設定されていません。

Python内で、sys.pathスクリプトのインポートに使用されるパスのリストが表示されます。

私はどのように慣れていない easy_install宛先ディレクトリの決定はが、指定できるコマンドライン引数があると確信しています。

使用するpythonへのeasy_installフルパスをコマンドの前に付けて、実行するpythonバージョンを指定してみてください。

またeasy_install、インストール済みの1つのpythonバージョン内のスクリプトへのbin内のシンボリックリンクがあるかどうかも確認します。


1

Virtualenvは間違いなくここで天の恵みです。

私のセットアップでは、環境変数VIRTUALENV_USE_DISTRIBUTEが1に設定されているため、setuptoolsの代わりに最新のDistributeパッケージが使用されます。次のように、システム上にPythonの2つのバージョンの仮想環境を作成しました。

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

次に、次の3つのエイリアスを作成しました.bashrc

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

したがってpy2、Python 2.6 py3のデフォルトとPython 3.2のデフォルトに切り替えるために使用できます。入力idleすると、現在の仮想環境に適したIDLEのバージョンが実行されます。

これらの仮想環境の1つへのパッケージのインストールには、通常、pip installコマンドが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.