背景:
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
を書き込むと、空の行しか表示されません。
複数のPython=バージョンをインストールする推奨される方法は、それぞれをソースからインストールすることです-それらは幸せに共存します。次に、virtualenvを適切なインタープリターと共に使用して、必要な依存関係をインストールできます(pipまたはeasy_installを使用) )ソースから複数のインタープリターを簡単にインストールするための秘訣は、以下を使用することです。
Sudo make altinstall
より一般的な「Sudo make install」の代わりに。これにより、実行可能ファイルにバージョン番号が追加されるため(python-2.5、python-2.6、python-3.2などになります)、Pythonのシステムバージョンとの競合が防止されます。
これは、隔離されたPython=環境を作成するための非常に人気のあるツールです virtualenv の完璧なアプリケーションのようです。これはPythonのバージョンを指定するサンプルコマンドです
$ virtualenv --python=/usr/bin/python2.6 myvirtualenv
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 ...
厳密に言えば、virtualenv
はbase Pythonのコンテキストで作成する必要があるため、ここでは役に立ちません。これは、easy_install
の実行とまったく同じ問題です。それがvirtualenv
の--python
引数の目的です。何らかの理由でeasy_install
は類似の引数を提供しないため、上記のように特定のPythonインタープリターで実行する必要があります。
私もFedora 13を使用しており、PYTHONPATH
が設定されていません。
Pythonでは、sys.path
は、スクリプトのインポートに使用されるパスのリストを提供します。
easy_install
は宛先ディレクトリを決定しますが、指定できるコマンドライン引数があると確信しています。
実行するpythonバージョンを指定してみてくださいeasy_install
の下に、必要なpythonへのフルパスをコマンドの前に置きます。
また、easy_install
は、1つのpythonインストールしたバージョン内のスクリプトへのbin内のシンボリックリンクです。
ここで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
コマンドのみが含まれます。