同じマシン上に複数のPythonバージョンがありますか?


89

Linuxの同じマシンに複数のバージョンのPythonをインストールして実行する方法について、Python Webサイトのどこかに公式ドキュメントがありますか?

何億ものブログ投稿と回答を見つけることができますが、これを行うための「標準的な」公式の方法があるかどうか知りたいですか?

それとも、これはすべてOSに依存していますか?

回答:


79

完全に独立していると思います。それらをインストールするだけで、コマンドeg/usr/bin/python2.5とができ/usr/bin/python2.6ます。/usr/bin/pythonデフォルトとして使用するものにリンクします。

とにかく、すべてのライブラリは別々のフォルダ(バージョンにちなんで名付けられた)にあります。

バージョンを手動でコンパイルする場合、これはPythonソースコードのreadmeファイルからのものです。

複数のバージョンをインストールする

UnixおよびMacシステムで、同じインストールプレフィックス(configureスクリプトの--prefix引数)を使用して複数のバージョンのPythonをインストールする場合は、プライマリpython実行可能ファイルが異なるバージョンのインストールによって上書きされないように注意する必要があります。「makealtinstall」を使用してインストールされたすべてのファイルとディレクトリには、メジャーバージョンとマイナーバージョンが含まれているため、並べて使用できます。「makeinstall」は、$ {prefix} /bin/pythonX.Yを参照する$ {prefix} / bin / python3も作成します。同じプレフィックスを使用して複数のバージョンをインストールする場合は、どのバージョン(存在する場合)が「プライマリ」バージョンであるかを決定する必要があります。「makeinstall」を使用してそのバージョンをインストールします。「makealtinstall」を使用して他のすべてのバージョンをインストールします。

たとえば、2.6をプライマリバージョンとしてPython 2.5、2.6、および3.0をインストールする場合は、2.6ビルドディレクトリで「makeinstall」を実行し、その他のディレクトリで「makealtinstall」を実行します。


5
おかげで、プライマリの「makeinstall」とセカンダリの「makealtinstall」がそれを明確にしました。
Andriy Drozdyuk 2010年

4
バージョン間でライブラリを共有する正しい方法はありますか?たとえば、MySQLdb for 2.6を使用していて、2.7をインストールしたとします。MySQLdbを2.7でも利用できるようにするにはどうすればよいですか?
romeroqj

あなたが提供するすべての情報はUnix / LinuxとMacOSに関するものなので、OPが求めるように、明らかにOSから「完全に独立」しているわけではありません。Windowsの場合、プロセスはまったく異なりますが、同様に簡単です。
wwwayne 2015

28

Windowsでは、「C:\ python26」と「C:\ python31」という別々のフォルダーにインストールされますが、実行可能ファイルの名前は同じ「python.exe」です。

それぞれ「python26」と「python31」のラッパーとして機能する「python.bat」と「python3.bat」を含む別の「C:\ python」フォルダーを作成し、「C:\ python」をに追加しました。 PATH環境変数に。

これにより、入力pythonまたはpython3、.bat Pythonラッパー、して、ラッパーを開始。

Linuxでは、この#!トリックを使用して、スクリプトで使用するバージョンを指定できます。


それらの.batファイルに何を追加しますか?
aidis 2014年

この回答は非常にWindows固有であり、質問がLinuxに関連しているという理由だけで賛成することはありません。それ以外の場合は、すばらしい情報です。
ジム・アホ

2
ユーザーはもう存在しません、私は本当にそのバッチファイルが欲しかった
Wargog

6
これは私がpython.batファイルに入れたものです(1行だけ): "c:\ python27 \ python%*"次に、通常どおりに呼び出します。つまり、 'python test.py'を実行すると、%*がすべての引数を取得します。そしてそれを実際の実行可能ファイルに渡します。C:\ binフォルダーで直接mklinkを使用することもできます。詳細については、こちらをご覧ください:stackoverflow.com/a/13953614/865929
Sean Glover

1
これで、py -3.4またはpy -2.7を実行するだけで、プログラムpy(の下C:\Windows)がそのPythonインタープリターを選択します(インストールされていると仮定します)。
JamesThomasMoon19 7919

14

2019年の更新:使用 asdf

最近では、asdfを使用してさまざまなバージョンのPythonインタープリターを並べてインストールすることを勧めします。

注1:asdfPythonだけでなく、すべての主要言語で機能します。

注2:pipenvpoetryasdfなどの一般的なパッケージマネージャーと組み合わせて正常に動作します。

あなたが持っている場合は航空自衛隊がインストールあなたが簡単/ダウンロード新しいPythonのインタプリタをインストールすることができます。

# Install Python plugin for asdf:
asdf plugin-add python

# List all available Python interpreters:
asdf list-all python

# Install the Python interpreters that you need:
asdf install python 3.7.4
asdf install python 3.6.9
# etc...

# If you want to define the global version:
asdf global python 3.7.4

# If you want to define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
asdf local python 3.7.4

古い回答:ソースからPythonをインストールする

Ubuntu / Mintに複数のバージョンのPython(メインバージョンの隣)をインストールする必要がある場合:他のUnixでも同様に機能するはずです。)

1)ソースコンパイルに必要なパッケージをインストールする

$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

2)目的のPythonバージョンをダウンロードして抽出します

Linux用のPythonソースをtarballとしてダウンロードし、に移動します/usr/srcます。

ダウンロードしたパッケージを所定の場所に解凍します。(「x」をダウンロードしたバージョンに置き換えます)

$ sudo tar xzf Python-x.x.x.tgz

3)Pythonソースをコンパイルしてインストールする

$ cd Python-x.x.x
$ sudo ./configure
$ sudo make altinstall

新しいPythonビンはにあり/usr/local/binます。新しいバージョンをテストできます。

$ pythonX.X -V
Python x.x.x
$ which pythonX.X
/usr/local/bin/pythonX.X

# Pip is now available for this version as well:
$ pipX.X -V
pip X.X.X from /usr/local/lib/pythonX.X/site-packages (python X.X)

6

異なるPythonバージョンをインストールする方法は、確かにOSに依存します。

ただし、Linuxを使用している場合は、pythonbrewpythonzなどのツールを使用して、さまざまなバージョンを簡単に管理および切り替えることができます。


configure / makealtinstallを使用してMacにインストールしました。今のところ問題ありません。
Evgeny

$user1デフォルト以外のPythonバージョンを提供することは可能ですか?
ローランド

1
@Rolandpyenvはそのために機能します。上記のリンクのreadmeから:> [Lets]ユーザーごとにグローバルPythonバージョンを変更します。
theeddieh

5

私はMacを使用していますが、私にとって最も効果的な方法はpyenvを使用することです。

以下のコマンドはMac用ですが、Linuxと非常によく似ています(以下のリンクを参照)

#Install pyenv
brew update
brew install pyenv

MacのプライマリバージョンとしてPython3.6があるとします。

python --version 

出力:

Python <your current version>

今すぐpython3.7をインストールし、最初にすべてをリストします

pyenv install -l

3.7.3を取りましょう:

pyenv install 3.7.3

必ずターミナルでこれを実行してください(〜/ .bashrcまたは〜/ .zshrcに追加してください):

export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"

それでは、開いているターミナル/シェルでのみ実行してみましょう。

pyenv shell 3.7.3

今すぐ実行

python --version

出力:

Python 3.7.3

そして、それほど重要ではありませんが、開いたシェル/ iTermで設定を解除します。

pyenv shell --unset

あなたはそれを実行することができ、グローバルまたはローカルにも


1

パッケージマネージャー-ユーザーレベル

Pythonの複数のバージョンをインストールして管理できるパッケージマネージャーの場合、次のような選択肢があります。

  • pyenv -Pythonのバージョンのみをインストールおよび管理できます
  • asdf-多くの異なる言語をインストールして管理することができます

これらのパッケージマネージャーの利点は、ソースからpythonをインストールするよりも、セットアップして複数のバージョンのpythonをインストールする方が簡単な場合があることです。また、shimを使用して使用可能なPythonバージョンを簡単に変更したり、ディレクトリごとにPythonバージョンを設定したりするためのコマンドも提供します。

この欠点は、つまり、デフォルトでは、彼らは(自分のホームディレクトリ内)ユーザレベルでインストールされ、ユーザー・レベルの構成を少し必要としている-あなたはあなたの編集する必要があります~/.profileし、~/.bashrcまたは類似したファイル。これは、それらを使用して、すべてのユーザーに対して複数のPythonバージョンをグローバルにインストールすることは容易ではないことを意味します。これを行うために、OSの既存のPythonバージョンと一緒にソースからインストールできます。


ソースからのインストール-システム全体

このメソッドにはroot権限が必要です。

追加の考慮事項とオプションについては、ソースからビルドするための公式のPythonドキュメントを参照してください。

/usr/localは、システム管理者が共有(システム全体)ソフトウェアをインストールするための指定された場所であるため、そのサブディレクトリは、Pythonソースをダウンロードしてインストールするのに適した場所です。LinuxFoundationのファイル階層標準のセクション4.9を参照してください

ビルドの依存関係をインストールします。Debianベースのシステムでは、以下を使用します。

apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev

インストールするPythonのバージョンを選択します。Pythonソースリリースを参照してくださいリストページを参照してください。

でファイルをダウンロードして解凍し/usr/local/srcX.X.X以下をPythonバージョン(つまり3.8.2)に置き換えます。

cd /usr/local/src
wget https://www.python.org/ftp/python/X.X.X/Python-X.X.X.tgz
tar vzxf Python-X.X.X.tgz

ビルドしてインストールする前に、CFLAGS必要なCコンパイラフラグを使用して環境変数を設定します(GNUのmakeドキュメントを参照)。これは通常、一般的な使用には必要ありませんが、たとえば、このPythonバージョンでuWSGIプラグインを作成する場合は-fPIC、次のようにフラグを設定することをお勧めします。

export CFLAGS='-fPIC'

作業ディレクトリを解凍したPythonソースディレクトリに変更し、ビルドを構成します。プロファイルガイド付き最適化のコマンドの--enable-optimizationsオプションを使用することをお勧めします。使用する(適切なサブディレクトリにインストールするには、など、)。./configure--prefix=/usr/local/usr/local/bin/usr/local/lib

cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local

複数のバージョンをインストールするときにファイルが上書きされないように、でプロジェクトをビルドしmakeてインストールしmake altinstallます。Pythonビルドドキュメントのこのページの警告を参照してください

make -j 4
make altinstall

そうすれば、新しいpythonとpipのバージョンをpythonX.Xand pipX.X(つまりpython3.8and pip3.8)で実行できるはずです。新規インストールのマイナーバージョンがOSのバージョンと同じである場合(たとえば、python3.8.4をインストールしていて、OSがpython3.8.2を使用している場合)、パス全体(/usr/local/bin/pythonX.X)を指定するか、を設定する必要があることに注意してください。このバージョンを使用するためのエイリアス。


0

これは、使用するパッケージ配布システムに最も強く依存します。たとえば、MacPortsを使用すると、複数のPythonパッケージをインストールし、pyselectユーティリティを使用してデフォルトを簡単に切り替えることができます。いつでも、フルパスを指定することでさまざまなPythonインタープリターを呼び出すことができ、それらのフルパスを指定することで、すべてのPythonライブラリとヘッダーに対してリンクすることができます。

したがって、基本的に、バージョンをインストールする方法が何であれ、インストールを別々に保つ限り、それらを別々に実行することができます。


パッケージ配布システムとは何ですか?
Andriy Drozdyuk 2010年

@drozzy:たとえば、OpenSuseで使用されるRPM、Debianベースのディストリビューションで使用されるapt、Gentooなどで使用されるportageなど。基本的にはソフトウェアをインストールするためのツールです。
Felix Kling 2010年

0

私はanacondaナビゲーターでこれを行いました。anaconda navigatorをインストールし、Pythonバージョンが異なる2つの異なる開発環境を作成しました

環境を切り替えたり、アクティブ化および非アクティブ化することで、異なるPythonバージョンを切り替えます。

最初にanacondanavigatorをインストールしてから、環境を作成します。

環境の管理方法については、こちらのヘルプをご覧ください

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

これがコンダでそれをするためのビデオです

https://youtu.be/EGaw6VXV3GI

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