Ubuntu 20.04の上でPythonの複数のバージョンを管理する
6945 ワード
Python開発に対する私の最も初期の欲求不満の1つはPython自体とは無関係でしたが、Pythonアプリケーションを展開するのは不可解な難解な行為でした.コードブートキャンプとチュートリアルでは、ローカルでPythonコードを実行する方法を学生に教えることのすばらしい仕事をします、しかし、最も意味があるアプリケーションはローカルマシンで走らせません:彼らはインターネット上でサーバー上で走ります、それが点であるので、それはそうです?多分、私はここで狂気の薬を飲んでいます.
Ubuntu 20.04は、Python 3.8.5でボックスから出てくるPython 2を落とすUbuntuの最初のLTSバージョンです.しかし、あなたがPythonのより新しいバージョンのために意図されたアプリを書いたならば、どうですか?あなたが私のような場合は、システムのデフォルトのインストールを置き換えるしようとしている可能性がありますdestroyed your machine 過程で.誰もあなたがそれをしないように言われないならば、私は栄誉をします:それをしないでください.
それで、我々は何をしますか?UbuntuでPythonの最新バージョンを取得する方法にはいくつかありますが、Ubuntuの組み込みの「代替インストール」を使用すると、いくつかの理由で最適です.
最新バージョンのダウンロード
最初のステップはよく知らなければなりません.Ubuntuのミラーとパッケージを更新する必要があります.
$ apt update && apt upgrade -y
義務的更新UbuntuマシンでPythonを新しくインストールするには、Pythonが依存する必須ライブラリの全体をインストールする必要があります.私は正直にこれらの半分の半分も確認しないでください、そして、我々のどちらも多分決して必要としないでしょう.私を信頼してください、それは必要なステップです:
$ 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 libffi-dev zlib1g-dev
Python依存関係のインストールこれは多くの人々がUbuntuのパッケージマネージャを介してPythonをインストールすることになるかもしれないです
apt-get install python3.X
. ソースから最新のPythonバージョンをダウンロードしてビルドします.Pythonのバージョンが十分に新しい場合、いくつかのUbuntuマシンは最新のバージョンをより重要に見つけるために必要な更新ミラーを持っているかもしれません.Pythonの最新版は、Python上のPythonのソースリリースページで常に見つかります.org:
https://www.python.org/downloads/source/
上記のページの最初のリンクは最新のPython 3リリース- Python 3を読むべきです.そのページで、「ファイル」セクションにスクロールして、gzipされたソースtarballのURLをコピーしてください.
Ubuntuマシンでは、コピーしたURLからPythonソースを取得します
wget
. 下の行は圧縮をダウンロードしますPython 3.9.2 あなたの/optフォルダへのアーカイブとそれを解凍します:$ cd /opt
$ sudo wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
$ sudo tar xzf Python-3.9.2.tgz
ダウンロードPythonの最新バージョンがダウンロードされました.今、我々はそれをインストールする必要があります.正しく.
ソースからの代替Pythonのインストール
Pythonをインストールする欲求不満
apt-get install python3.X
Pythonをうまくインストールすることはできますが、UbuntuはデフォルトではPythonのバージョンがデフォルトで使用されます.幸いなことに、Ubuntuは私たちを提供することによって、Pythonの追加(別名:バージョン)のバージョンをインストールすることができますmake altinstall
コマンド$ cd Python-3.9.2
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
ソースからインストールこれは完了する瞬間がかかる場合があります.完了すると、Python 3を参照してください.9あなたの
/usr/local/bin/
ディレクトリ$ cd /usr/local/bin/
$ ls
Pythonバージョンの検証代替Pythonインストールの管理
それで、我々は現在我々のマシンにインストールされた2つのバージョンのPythonを持っています.システムのデフォルトのPythonインストールを単独で残したいですが、Python 3.9で書かれたアプリケーションを実行したいと思います.では、どうやってこれを管理するのですか?
Linuxでは、このシナリオではupdate-alternatives コマンド.我々はUbuntuに、我々は我々のマシンに同じソフトウェアの代わりのバージョンの束を持っていることを伝えることができるので、簡単にそれらを切り替えるには能力を与えます.次のように動作します.
$ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
$ update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.9 2
我々は走ったupdate-alternatives
二度: Python 3.8に一度、Python 3.9を一度します.今すぐ使えるupdate-alternatives --list
特定のソフトウェアを持っているすべての別のインストールを一覧表示するには、次の手順に従います.$ update-alternatives --list python
/usr/bin/python3.6
/usr/local/bin/python3.8
今、Pythonのバージョン間でスワップできます.以下を実行します.$ update-alternatives --config python
あなたは以下のようなプロンプトで打つべきです.これは、システムが認識しているPythonのすべてのバージョンを一覧表示します.「選択」番号をプロンプトに指定して使用するPythonのバージョンを選択します.There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/local/bin/python3.9 2 auto mode
* 1 /usr/bin/python3.8 1 manual mode
2 /usr/local/bin/python3.9 2 manual mode
Press <enter> to keep the current choice[*], or type selection number:
そして、あなたはそれをやった!Pythonバージョンを切り替えるには、上記のプロンプトに対して、使用するPythonのバージョンを表す選択番号を付けます.それは不合理ですが、UbuntuのPythonバージョンを変更する際に物事を壊すことなく成功することはかなり印象的です.私は、これが主にPythonを教える人々の欠点であると主張します.「できない人、教える」ならば、意味のあるソフトウェアを始めていない人々によって多くのPythonコースが教えられると仮定するのは公平です.それは厳しいが、私は関係ない.
我々は“ハード”の部分を行ってきたが、世話をするためのハウスキーピングのビットがあります.新しくインストールされているPythonにPIPをインストールする必要があります.
$ apt install python3-pip
$ python3.9 -m pip install --upgrade pip
PIP 3をインストールするそれはすべてそこにある!
Reference
この問題について(Ubuntu 20.04の上でPythonの複数のバージョンを管理する), 我々は、より多くの情報をここで見つけました https://dev.to/toddbirchard/managing-multiple-versions-of-python-on-ubuntu-2004-2c3lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol