Bagaimana cara menginstal versi Python yang berbeda menggunakan apt-get?

125

Bagaimana saya bisa menginstal versi Python yang berbeda menggunakan apt-get?

Jelas saya menyadari bahwa saya dapat menginstal menggunakan source tar ball, namun saya lebih memilih untuk tidak menginstal dari sumber dan alih-alih menggunakan manajer paket, karena itulah gunanya. Tentunya suatu tempat yang memiliki reputasi membangun file .deb untuk rilis Python terbaru (mengapa python.org tidak ada di luar saya) yang dapat saya referensi.

Apa yang harus saya lakukan untuk referensi mereka dan masalah apa yang mungkin terjadi ketika meningkatkan ke versi berikutnya?

Jika tidak ada cara selain membangun dari sumber, apakah ada paket (semu) yang dapat saya instal yang akan menyediakan semua dependensi yang diperlukan tanpa harus menemukan dan menginstal masing-masing secara individual? Jadi saya tidak mendapatkan:

The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_dbm                  _gdbm                 _lzma              
_sqlite3              _ssl                  _tkinter           
readline              zlib  
Harry
sumber
apakah Anda pernah mendapatkan E: Couldn't find any package by regex 'python3.5'dan gagal menginstal melalui apt-get install python3.5?
Charlie Parker
pertanyaan serupa: askubuntu.com/questions/310441/...
Charlie Parker
beberapa saran bagus di sini: quora.com/...
Charlie Parker
1
@CharlieParker Apakah Anda mencoba menginstal Anaconda ?
M. Becerra

Jawaban:

169

Felix Krull menjalankan PPA yang menawarkan pada dasarnya semua versi Python (serius, ada versi 2.3.7 untuk vivid ...) untuk banyak rilis Ubuntu di https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa .

Lakukan yang biasa:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.5

Ini tidak akan menimpa yang ada python3.4yang masih disinkronkan sebagai python3.

JANGAN ubah symlink! Tampaknya ada banyak fungsi sistem yang tidak berfungsi dengan baik dengan python3.5.

Saya mencoba ini dan kemudian tidak dapat membuka terminal, pembaruan perangkat lunak, ...

cd /usr/bin
sudo rm python3

Upgrade ke Wily akan mengadaptasi paket meta python3untuk menunjuk python3.5. Saya tidak mengharapkan kerusakan, tetapi pada saat ini repositori asing tidak diperlukan lagi. Jadi agar benar-benar aman, Anda dapat membersihkan PPA sebelum melakukan upgrade.

Nephente
sumber
5
untuk noob di luar sana, jangan symlink! juga tidak symlinking hanya berarti Anda harus mengetikkan python3.5 dari baris perintah untuk menjalankan python 3.5
Chris Hawkes
4
Bisakah Anda tunjukkan, bagaimana saya bisa menggunakan pip 3.4 dengan 3.5 ini?
Groosha
2
@ kondra007 Saya mengikuti instruksi dari pip.pypa.io/en/stable/installing (harap baca peringatan di sana) dan kedua perintah ini wget https://bootstrap.pypa.io/get-pip.py; sudo python3.5 get-pip.pymemberi saya pip yang berfungsi untuk python 3.5 tetapi pip3.4 tidak berfungsi lagi. Jika ada yang tahu lebih baik, silakan berkomentar
ndemou
2
Juga untuk mengatur python3.5 sebagai default ~$ vim ~/.bashrcdan menambahkan ini alias python=python3.5. lalu~$source ~/.bashrc
Krishnadas PC
1
Tips: jika add-apt-repository: command not found, jalankan apt-get install software-properties-common python-software-propertiesuntuk menginstal
Mithril
35

Tautan Youtube ini membantu saya menginstalnya.

Langkah-langkahnya adalah:

sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar xzvf Python-3.5.0.tgz
cd Python-3.5.0
./configure
make
sudo make install

Untuk memeriksa apakah python diinstal, ketikkan yang python3.5lain:

sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5
bhattacharjee joydeep
sumber
3
OP mengatakan dia tidak ingin mengkompilasi dari sumber
Michael Bates
3
Ya kamu benar. Juga kompilasi dari sumber mungkin memperkenalkan beberapa masalah ketergantungan lebih jauh di jalan. Tapi itulah cara saya mengatasinya. Jika ada cara yang lebih baik saya pasti ingin tahu.
joydeep bhattacharjee
5
Pertimbangkan ./configure --enable-optimizations stackoverflow.com/questions/41405728/...
warvariuc
1
@CharlieParker karena Python tidak dibuat untuk OS tertentu. Ini dimaksudkan untuk dijalankan di platform apa pun. Untuk Linux, ini berarti bahwa setiap versi harus dikompilasi dan didistribusikan untuk setiap versi dari setiap distro Linux (yang jumlahnya banyak), atau mereka mendistribusikan sumbernya dan membiarkan pengguna mengkompilasinya sendiri di lingkungan di mana ia akan dibuat. bekas. Yang terakhir jauh lebih layak.
CJStuart
2
Anda juga memerlukan kompiler c / c ++ dariapt-get install build-essential
bato3
13

Ikuti saja langkah-langkah itu (diuji):

Langkah 1 - Instal Paket yang Diperlukan

Gunakan perintah berikut untuk menginstal prasyarat untuk Python sebelum menginstalnya.

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

Langkah 2 - Unduh Python 3.5.2

Unduh Python menggunakan perintah berikut dari situs resmi python. Anda juga dapat mengunduh versi terbaru menggantikan yang ditentukan di bawah ini.

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

Sekarang ekstrak paket yang diunduh.

sudo tar xzf Python-3.5.2.tgz

Langkah 3 - Kompilasi Sumber Python

Gunakan set perintah di bawah ini untuk mengkompilasi kode sumber python pada sistem Anda menggunakan altinstall.

cd Python-3.5.2
sudo ./configure
sudo make altinstall

make altinstalldigunakan untuk mencegah penggantian file biner python default /usr/bin/python.

Langkah 4 - Periksa Versi Python

Periksa versi terbaru yang diinstal python menggunakan perintah di bawah ini.

$ python3.5 -V

Python 3.5.2

Sumber .

Bilal
sumber
2
+1 untuk menggunakan altinstall secara default. Tidak ada banyak skenario nyata di mana Anda bisa hidup hanya dengan satu versi. Bahkan sistem dengan Python3 sebagai default Anda mungkin terpaksa menginstal Python sebagai terbalik -> Python2 atau menambahkan Python2.
erm3nda
1
Saya mendapat kesalahan seperti dijelaskan di sini - bugs.python.org/issue31652 harus dijalankan sudo apt-get install libffi-devuntuk menyelesaikannya.
Nishan Chathuranga
Saya juga akan menambahkan sudo apt-get install liblzma-devuntuk mengaktifkan dukungan lzma.
v.grabovets
6

Sejauh yang saya tahu, setidaknya dalam wadah buruh pelabuhan, seseorang dapat secara pasti apt-getpython 3.

Pertama saya bertemu dengan wadah ubuntu dengan wadah:

docker run -it --rm ubuntu:latest bash

maka untuk beberapa alasan diperlukan untuk memperbarui beberapa hal ubuntu jadi saya lakukan (di dalam wadah):

apt-get update && apt-get install -y build-essential git libjpeg-dev

dan kemudian saya cukup menginstal python3 dan sepertinya secara otomatis mendapat python 3.5:

apt-get install python3
apt-get install python3-pip

dan untuk menguji apakah pip berfungsi, mari unduh sesuatu:

pip3 install tensorflow

semua sepertinya bekerja dengan baik untuk saya.

Catatan Penting: tampaknya jika Anda sudah menginstal python 3.4 maka apt-get install python3tidak berfungsi karena dikatakan Anda sudah memilikinya. Tampaknya itu adalah salah satu masalah saya karena saya mulai dari gambar buruh pelabuhan dari tensorflow (khususnya gcr.io/tensorflow/tensorflow:latest-devel-py3) dan sesuatu di gambar itu (saya berasumsi bahwa mereka sudah memiliki python 3.4 tetapi mungkin sesuatu yang lain) tidak memungkinkan saya untuk memperbarui python saya untuk mendapatkan python 3.5.


kredit: Saya menemukan ini ketika saya menanyakan hal berikut: https://stackoverflow.com/questions/42122826/can-one-use-python-3-5-in-a-docker-container-based-out-of-the -tensorflow-docker


Catatan: Anda juga bisa menginstal Anaconda. Sebagai contoh buruh pelabuhan dapat dilakukan:

docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash

dari situs web resmi mereka: https://hub.docker.com/r/continuumio/anaconda3/

Solusi ini menginstal python 3.6 tetapi saya yakin jika Anda melihatnya di sana Anda bisa mendapatkan python 3.5 jika itu yang Anda inginkan.

Catatan: Anda mungkin harus menggunakan lingkungan virtual seperti virtual env atau conda / anaconda kecuali Anda menggunakan buruh pelabuhan. Hanya ingin mengingatkan orang.

Charlie Parker
sumber
1
"in a docker container" adalah pernyataan yang sangat umum: semuanya tergantung gambar yang menjadi dasar wadah, misalnya versi Ubuntu mana. Selain itu, mungkin ada versi minor seperti 3.5 atau 3.6 yang tidak tersedia dalam satu versi Ubuntu (14.04 misalnya)
giorgiosironi
2

Ada sejumlah distribusi python baru yang tersedia untuk diinstal melalui apt-get yang tercantum dalam Paket Ubuntu

sebagai contoh, versi berikut saat ini tersedia:

python2.7

python3.2

python3.4

python3.5

python3.6

Ketersediaan bervariasi dengan rilis Ubuntu ke tingkat tertentu. Misalnya 3.5 tersedia untuk Xenial, Yakkety, dan Zesty dan 3.6 tersedia untuk Yakkety dan Zesty tetapi Anda harus mengaktifkan repositori Universe jika tidak diaktifkan untuk mendapatkannya melalui apt-get. Untuk memeriksa ketersediaan untuk versi Ubuntu Anda, periksa tautan di atas.

Mengintip cepat menunjukkan bahwa jawaban ini juga masih berlaku karena PPA memiliki 3,6 bahkan untuk Trusty.

Penatua Geek
sumber
versi Python yang tersedia di Repo Ubuntu bukan versi Python terbaru .
yaitloutou
@yaitloutou Pertanyaannya mengatakan "baru" bukan "terbaru". Jangan ragu untuk menulis jawaban yang lebih baik
Penatua Geek
Anda benar, tetapi karena relatif baru untuk apa yang tidak ditentukan, saya menafsirkannya sebagai terbaru :)
yaitloutou
@yaitloutou Merasa bebas dan tentu saja menulis jawaban yang lebih baik! Saya yakin itu akan dihargai.
Penatua Geek
Saya baru saja mulai aktif di sini, dan saya masih belajar. Maaf jika Anda menemukan komentar saya pada jawaban Anda menonjol
yaitloutou
0

Saya akan mempertimbangkan menggunakan lingkungan virtual daripada menginstal versi python melalui apt-get.

Menggunakan lingkungan virtual, lihat di sini, adalah praktik yang baik untuk dikembangkan dengan python. Mereka membiarkan Anda mengisolasi lingkungan python Anda dari versi sistem yang diinstal python.

Selain itu, Anda tidak harus mendapatkan akses sudo saat memasang pustaka apa pun (via pip, dll.).

devrimbaris
sumber
11
Saya pikir Anda perlu menginstal versi python yang Anda inginkan sebelum dapat menggunakannya di lingkungan virtual.
Nzbuu
1
Anda menginstal versi python yang diinginkan di lingkungan virtual, daripada mengubah jalur terkait python Anda hanya dengan menjalankan skrip "aktifkan" di lingkungan virtual.
devrimbaris
Ini sebenarnya adalah apa yang ingin saya lakukan — hal pertama yang saya coba lakukan setelah mengikuti jawaban @ Nephente adalah titik untuk menggunakannya virtualenv -p. Tapi itu meledak dengan "ImportError: tidak dapat mengimpor nama 'HTTPSHandler'".
Michael Scheper
1
mengapa ini diturunkan? virtual envs biasanya berfungsi dengan baik.
Charlie Parker
bagaimana Anda menginstal env virtual di ubuntu (seperti dalam saran Anda) tetapi dengan python 3.5?
Charlie Parker
0

Conda secara aktif diperbarui dan memungkinkan Anda untuk menginstal beberapa versi python di venvs yang dikelola tanpa kebosanan mengatur semuanya sendiri. Masalah jalur ekstensi biner mungkin telah diselesaikan di banyak ketergantungan / rantai pip yang dikelola anaconda yang digunakannya.

RobotHumans
sumber