web-dev-qa-db-ja.com

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

背景

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

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

私はpython 2.5をソースからインストールしました。問題を解決するために、--prefix=/usrオプションを使用しました。これは、python in /usr/bin/python2.5をインストールしました。および/usr/lib/python2.5

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

パッケージ管理

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

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

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

21
Alex

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

Sudo make altinstall

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

20
VPeric

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

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

easy_installを使用すると、パッケージは常に/usr/lib/python2.6/site-packages/にインストールされます

これは、distutilsがインストールされるすべてのスクリプトにShebang行を追加するためです。 easy_installスクリプトを直接実行すると、スクリプトがインストールされたインタープリターで実行されます(Shebang行による)。実行されているeasy_installは、PATHではなくPYTHONPATHによって異なります。 Python 2.5インスタンスにパッケージをインストールする場合、使用するPythonインタープリターを指定してeasy_installを実行する必要があります。

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

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

5
Piotr Dobrogost

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

Pythonでは、sys.pathは、スクリプトのインポートに使用されるパスのリストを提供します。

easy_installは宛先ディレクトリを決定しますが、指定できるコマンドライン引数があると確信しています。

実行するpythonバージョンを指定してみてくださいeasy_installの下に、必要なpythonへのフルパスをコマンドの前に置きます。

また、easy_installは、1つのpythonインストールしたバージョン内のスクリプトへのbin内のシンボリックリンクです。

2
bkersten

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

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

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

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

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コマンドのみが含まれます。

1
pythoneer