Ubuntuに最新のPython 2.7.Xまたは3.Xをインストールするにはどうすればよいですか?


183

http://python.org/download/からダウンロードしたUbuntuに最新のPython tarballをインストールしたい

これは正しいインストール方法ですか?

./configure
make
make install

そうでない場合、どのようにすればよいですか?


1
かつて、Ubuntuに新しいバージョンのpython をインストールするためにこれが要求されたと思います。今、 Ubuntuに古いバージョンのpython をインストールする必要があります(まだ多くの事柄にpython 2.7 必要なため)... tl; dr:この答えは現在/正しくありません。代わりに、実行し、のpython3がデフォルト(そしておそらく最小限python2.x)によってインストールされていると仮定すると:sudo apt-get install python-2.7 python-pip
マイケル

@michael_n何を言ってるの?ソースからコンパイルしても、この回答が間違ったり古くなったりすることはありません。ただ別の方法です。必要に応じて、aptを使用してプロセスを自動化できます。

必要なものを使用します。これが、これが時代遅れであるというあなたの主張をどのようにサポートしているかは本当にわかりません。自分が言ったように、利用できない場合があるため、必要なときに使用します。たとえば、Linux用のWindowsサブシステムは、ディストリビューションがubuntu 16.04.1(ベータ版)であるにもかかわらず、いくつかの古いソフトウェアパッケージを使用し、python2.6.2を使用します。この場合、最新のパッケージが必要な場合はコンパイルする必要があります

1
@jargonjunkieあなたはトピックから外れていますが、正しいです。質問が「python 2.7をubuntu 16.04+にインストールする方法」(16.04が利用可能になったので、これが私のポイントであるため)である場合は、単にsudo apt-get install python2.7。これは簡単であるだけでなく、唯一の正解です。これは、aptモジュールとその依存関係を順番に使用してPythonモジュールのインストールを処理できる唯一の方法だからです。
マイケル

これが説明に役立つことを願っています(追加回答)。Pythonエコシステムは非常に特定/細かく、Python環境を慎重に構築しないと簡単に「依存性地獄」に陥ることがあります askubuntu.com/a/831075/17060
マイケル

回答:


199

まず、いくつかの依存関係をインストールします。

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

次に、次のコマンドを使用してダウンロードします。

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz

抽出してディレクトリに移動します。

tar -xvf Python-$version.tgz
cd Python-$version

次に、checkinstall必要に応じてアンインストールを簡単にするために、代わりに使用したコマンドを使用してインストールします。

./configure
make
sudo checkinstall

version必要なバージョンに変更します(version=2.7.1またはversion=3.6.0など)。


20
使用sudo make installしていないaltinstallデフォルトのPythonのバージョンとして設定する
Shagun Sodhani

使用CXX=g++ ./configureに./configureをgを言って、警告を発行した場合++見つかりませんでした
SRJ

2
上記の指示に従ってインストールした後、実際にインストールされていることを確認するためにコンソールで実行するコマンドは何ですか?
J86

9
「Pythonをインストールする方法」という単純な質問に対する最良の答えが、このような恐ろしい警告を伴うことは非常に異常です。 Pythonの公式Webサイトにダウンロードページがたくさんあり、インストール手順が1ページもないことは非常に驚くべきことです。
-patb

4
pat-「pythonをインストールする方法」という簡単な質問に対する最良の答えはsudo apt-get install python、より複雑な答えは「最新の python をインストールする方法」であり、その意味は「ソースから」です。サードパーティからプリコンパイルされたバイナリをインストールする場合を除き、どのOSでも同じ問題が発生します。これは、どのOSでもリスクが高くなります(OSによって大きく異なります)。また、この回答は2012年のものです。最新のアドバイスについては、askubuntu.com / questions / 101591 /…を
マイケル

181

本当に自分でコンパイルしたいという熱意がない限り、DeadSnakes PPAを使用して、デフォルトで含まれていないバージョンのPythonをインストールすることをお勧めします。

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7

python2.4またはなどのその他のバージョンpython3.6も使用できます。


13
プログラムのメモ:10.04を使用している場合、add-apt-repositoryを使用する前にpython-software-propertiesをインストールする必要がある場合があります。
クレイグマロニー

3
代わりにビルド前のバイナリからそれをインストールするので、ローカル環境でのpythonを構築することをお勧めします
pylover

16
+1 :)really have a burning desire to compile it yourself
ワット

5
それに言及するのを逃した:1. ppaは公式に承認されていないため、最も安全な方法はソースからビルドすることです。2.これにより、グローバルPythonが作成されます。これはsudo、ローカルのパッケージではなく、他のユーザーがパッケージを変更またはインストールすることはできません。3.ソースからビルドすることにより、複数のpythonを異なる場所にローカルにインストールできます。
イオアニスフィリピディス14

2
apt-get install python2.7これは、python ... ugly !!の代わりにバイナリpython2.7をインストールします!!
ダヴァル

26

これを最新のUbuntuリリース1について引き続き説明します。Ubuntu16.04.1サーバーの場合、デフォルトのPythonはバージョン3.5であり、Python 2.7はデフォルトでインストールされません。新規インストールの場合(python実行可能ファイルさえないことに注意してください):

$ type python3 python2 python 
python3 is /usr/bin/python3
-bash: type: python2: not found
-bash: type: python: not found

$ python3 --version 
Python 3.5.2

$ python --version 
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Try: sudo apt install <selected package>

注意:続行する前に、あなたはおそらくやりたいだろう速いsudo apt-get updatesudo apt-get upgradesudo apt-get dist-upgrade(これらのコマンドは、実際にやっているまさにノートを行ってください。私は、新鮮な、ここでインストールと仮定しています。)

Python 2.7のインストールは次のように簡単です。

$ sudo apt-get install python2.7

Python 2.7のインストールの初期出力は次のとおりです。

$ sudo apt-get install python2.7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7-minimal
Suggested packages:
  python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,735 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc, etc...

Python 2.7をインストールした後、

$ type python3 python2.7 python3.5 python2 python
python3 is /usr/bin/python3
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5
bash: type: python2: not found
bash: type: python: not found

ただし、まだ問題があります。pipたとえば、jupyterノートブック、または最新のscipyやnumpy(など)を使用する場合は、まだPyPIモジュールをインストールできないため、インストールpipしてからpip installそれらをインストールします。graphvizやコアシステムライブラリなど、apt-get必要なシステム依存関係をインストールします。

$ type pip3 pip2 pip
bash: type: pip3: not found
bash: type: pip2: not found
bash: type: pip: not found

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

したがって、pipをインストールするには、次のように簡単sudo apt-get install python-pipです。

$ sudo apt-cache search -n pip | egrep '^python[0-9]*-pip'
python-pip - alternative Python package installer
python-pip-whl - alternative Python package installer
python3-pip - alternative Python package installer - Python 3 version of the package

python-pipPython 2.7 pippython3-pipPython 3の両方が必要になりますpip。を介しapt-getたインストールにより、必要な依存関係が確実にインストールされます。たとえば、pip2をインストールするための出力は次のとおりです。

$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl
  python-pkg-resources python-setuptools python-wheel python2.7-dev
Suggested packages:
  binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib
  autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc
  python-tk python-setuptools-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip
  python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc...

これの結果、興味深いことが起こります:「標準」(およびPEP推奨)python2python3(Python 2.7およびPython 3.5への単なるシンボリックリンク)ができました:

$ type python3 python2 python python2.7 python3.5 
python3 is /usr/bin/python3
python2 is /usr/bin/python2
python is /usr/bin/python
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5

あなたもしたいでしょうsudo apt-get install python3-pip。インストールする前に、次のものがあります。

$ type pip pip2 pip3
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
-bash: type: pip3: not found

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

インストール後pip3

$ sudo apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0 MB of archives.
After this operation, 55.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
...etc...

結果のバージョン:

$ type python python2 python3 pip pip2 pip3
python is /usr/bin/python
python2 is hashed (/usr/bin/python2)
python3 is hashed (/usr/bin/python3)
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
pip3 is /usr/bin/pip3

$ pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

そして、お気に入りのすべてのpython PyPIモジュールのインストールを開始する前の最後の1つ:pip自体(pip2とpip3の両方を個別にアップグレードする必要があります。また、実行可能ファイルpipを介して呼び出されるpythonか、pip実行可能ファイル、実際のアップグレードは)に保存されます/usr/lib

$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...

これで、スタンドアロンpipまたはpython(を介してpython -m pip {command})にバンドルされたバージョンを実行できます。


[1] 歴史的な要約:古いUbuntuにはPython 2.6しかなかったため、Python 2.7+をインストールするためのさまざまな方法がすべてありました。後で、Python 2.7がパブリックリポジトリに追加された後、最新のPython 2.7を最新の修正プログラムとともにインストールするという同じ課題がありました。これは(あまりにも)頻繁に必要でした。今日の状況はずっと良く/簡単です:現在公開されているリポジトリにある現在のPython 2.7と3.5(基本的に人々が気にするPythonプラットフォームバージョンは2つのみ)は非常に安定しているので、最新のもののインストールについて心配するだけです。最新のpythonではなく、python モジュール。そのため、Pythonの「最新バージョンの問題」は、一部 OSリポジトリからPyPI&に移動しました。aptpip


2
Ubuntu 16.04.1 LTSでのこの指示に従って、Python 2.7とpipを次のように正常にセットアップします。sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip install --upgrade pip; #バージョンの確認:$ pip --version-> pip 9.0.1 from /usr/local/lib/python2.7/dist-packages(python 2.7); $のpython --version - >パイソン2.7.12
ロバートLujo

私の無知を許してはいけませんが、Pythonバージョンを表示するときに「ハッシュ」とはどういう意味か知っていますか?
失敗した科学者

1
@TalhaIrfanそれは良い質問です(そして、簡単な答えを許可するなら):コマンドが(ほとんどのシェルで)bashで入力されるとき、cmdはで見つかるエイリアス、関数、または実行可能ファイルである可能性があり$PATHます env var PATHは、文字通り何千ものファイルを含むディレクトリの長いリストです。実行可能ファイルの検索を高速化するために、シェルはキャッシュされたハッシュテーブルを使用してすばやく検索します。古くなる可能性があるため、「ハッシュ」は、このコマンドがその実行可能ファイルunix.stackexchange.com/questions/5609/に
マイケル

@michaelどうもありがとう!それは本当に便利な答えです:簡潔で要点です!
失敗した科学者

1
@gaiaは、別の質問をしたいと思うかもしれません。それを理解するためにさらに前後が必要になるかもしれないからです(または、これを書いてから何かが変わった場合)。おそらく、最初に確認することの両方 pip(2.7)&pip3(3.xの)完全にアップグレード/インストール、およびちょうど旧ませんでした-すなわち、sudo apt-get install python-pip python3-pipsudo -H python2 -m pip install --upgrade pipsudo -H python3 -m pip install --upgrade pip ...それともそれが本当に許可の問題であるならば(それはで動作」で示されますsudo」)、追跡するのが少し難しくなります。
マイケル

11

12.04

Achuの回答をフォローしている場合は、用語libread5-devをに変更する必要がありますlibreadline-gplv2-dev。したがって、完全なコマンドは次のようになります。

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

4

pyenvからダウンロードしてインストールすることもできます

#Install Pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

#Install Python
pyenv install 2.7.8
pyenv global 2.7.8

pyenv install 3.4.5
pyenv global 3.4.5

これは、Ubuntuの古いバージョンでPythonの最新バージョンを取得する最もクリーンな方法です。pyenv-virtualenvプラグインを介したvirtualenvサポートも含まれており、異なるモジュール要件を持つアプリケーションを衝突することなく簡単にインストールできます。
-RichVel

2
pyenv約2つの警告:(1)それが唯一のbashシェルから動作します(または多分zshのが、確かUbuntuの上/ binに/ SHがあるダッシュではない)、および(2)には、ログインシェル(例えば必要でbash --loginはありません)、 Ansibleなどから簡単に達成できます。インタラクティブな使用に最適ですが、スクリプトサーバーにはあまり適していません。
-RichVel

0

ほとんどがこの答えのミラーであり、調整されたイントロがあります

pyenvをお勧めします。ヘッダーの依存関係のインストールとは別にビルドプロセスを自動化します(以下を参照)。単に言うだけで、新しい(または古い)バージョンのPythonをビルドしてインストールできますpyenv install 3.6.0。すべてがユーザーとして実行されるため、Ubuntu自体が使用するPythonを台無しにすることを心配する必要はありません。

一部のapt-repoベースのオプション(例:deadsnakes)とは異なり、pyenv update他の誰かがパッケージ化するのを待つ必要がないため、通常はリリース後の同じ日に動作します。インストールできるすべてのバージョンを見るpyenv install --list

pyenvをインストールする

  1. CPythonのビルドに必要なツールとヘッダーをインストールします(PyPyやJythonなどのエキゾチックなPythonには他の依存関係がある場合があります)。Gitはpyenvで使用され、さらにソースブランチのビルド/インストールも可能にするため、現在3.8であれば何でもインストールできます。つまり、GitHubから新しくCPythonのマスターブランチをインストールできます。

    sudo apt-get install -y git
    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libffi-dev libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    sudo apt-get install -y libpng-dev libfreetype6-dev    
  2. インストーラースクリプトを実行します(pyenvおよび元の作者が作成した非常に便利なpyenvプラグインをインストールします。詳細はこちらをご覧ください)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  3. init行を~/.profileorに追加します~/.bashrc(インストールスクリプトの最後に記載されています):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
  4. シェルを再起動する(閉じる&開くまたはexec $SHELL)か、プロファイルスクリプトを再読み込みします。(たとえば付きsource ~/.bashrc

できた!

環境を設定する

システムPythonに触れないように(一般的には悪い考えです。OSレベルのサービスは特定のライブラリバージョンなどに依存している可能性があります)、独自の環境を作るのは簡単です!さらに良い、いいえsudo、それまたはpipインストール!

  1. 好みのPythonバージョンをインストールします(これにより、ソースがダウンロードされ、ユーザー用にビルドされます。入力は不要です)

    pyenv install 3.6.0
  2. 必要に応じて後で他のユーザーを作成できるように、virtualenvにします

    pyenv virtualenv 3.6.0 general
  3. (ユーザーに対して)グローバルにアクティブにします

    pyenv global general
  4. Python / pipなどでやりたいことをやりましょう。それはあなた次第です。

ライブラリを後でクリーンアップする場合は、virtualenv(pyenv uninstall general)を削除するか、新しいライブラリを作成します(pyenv virtualenv 3.6.0 other_proj)。環境をディレクトリごとにアクティブにすることもできpyenv local other_projます。.python-versionます。ファイルを現在のフォルダーに PythonまたはpipでインストールされたPythonユーティリティーをその中または下から呼び出すと、それらはpyenvによってシムされます。

トラブルシューティング

  • bash: pyenv: command not foundfish: Unknown command 'pyenv'

    1. あなたのを確認し$PATH、のようなもので終わるつのエントリがあるはずです.pyenv/bin。不足している場合は、上記のpyenvのインストールで#3 AND#4(シェルを再起動)を実行したことを確認してください。
  • pyenv: no such command 'virtualenv'

    1. インストーラースクリプトを使用しなかった場合、ルートpyenvパッケージのみをインストールした可能性があります。プラグインを追加する手順については、pyenv-virtualenvを参照してください
    2. インストーラースクリプトを使用した場合は、で表示されるかどうかを確認してくださいpyenv commands
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.