web-dev-qa-db-ja.com

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

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

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

./configure
make
make install

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

182
mohammads

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

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など)。

197
Achu

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

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

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

180
brousch

最新のUbuntuリリースのためにこれを文書化し続けます1 :Ubuntu 16.04.1サーバーの場合、デフォルトのPythonはバージョン3.5で、Python 2.7はデフォルトでnotがインストールされます。新規インストールの場合(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 upgrade、およびSudo 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を介してPyPIモジュールをまだインストールできないためです。たとえば、jupyterノートブック、または最新のscipyまたはnumpy(など)が必要な場合は、pipその後pip installそれら、そして引き続きapt-getを使用して、必要なsystem依存関係(graphvizやコアシステムライブラリなど)をインストールします。

$ 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 2.7 pipにはpython-pipと、Python 3 pipにはpython3-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)python2およびpython3(これらは単なる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の両方を別々に。また、pippython実行可能ファイルまたは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(基本的に2つのPythonプラットフォームバージョン)は非常に安定しており、そのため、実際には、最新のpythonではなく、最新のpython modulesのインストールについてのみ心配する必要があります。そのため、Python「最新バージョンの問題」が部分的に OSリポジトリからaptに移動し、PyPI&pipに移動しました。

26
michael

12.04

Achu's answer をフォローしている場合、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
11
ThatGuy

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
4
Whispered

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

pyenv をお勧めします。ヘッダーの依存関係のインストールとは別にビルドプロセスを自動化します(以下を参照)。 pyenv install 3.6.0と言うだけで、新しいバージョン(または古いバージョン)のPythonをビルドしてインストールできます。すべてがユーザーとして実行されるため、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プラグインをインストールします。詳細は here を参照してください)

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

    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-installedPythonユーティリティをその中または下から呼び出すたびに、それらはpyenvによってシムされます。

トラブルシューティング

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

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

    1. インストーラースクリプトを使用しなかった場合、ルートpyenvパッケージのみをインストールした可能性があります。プラグインを追加する手順については、 pyenv-virtualenv を参照してください
    2. インストーラースクリプトを使用した場合は、pyenv commandsで表示されるかどうかを確認してください。
0
Nick T