Bagaimana cara menginstal Python 3.6?


107

Saya ingin menginstal Python terbaru, yaitu 3,6 pada saat posting ini. Namun, repositori mengatakan bahwa Python 3.4.2 adalah versi terbaru.

Saya sudah mencoba:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

Untuk memutakhirkan ke Python 3.6 di workstation Windows saya, saya cukup mengunduh exe, mengklik "berikutnya" beberapa kali, dan selesai. Apa prosedur yang tepat dan diterima secara resmi untuk menginstal Python 3.6 pada Debian Jessie?


6
Repositori Debian default berisi paket perangkat lunak yang khusus disusun untuk versi Debian tertentu. Kecuali untuk pembaruan keamanan (sebaiknya hanya perubahan paling sedikit yang diperlukan untuk memperbaiki lubang keamanan) versi baru sebagian besar perangkat lunak mungkin tidak tersedia sampai rilis besar berikutnya untuk menghindari potensi ketidakstabilan.
phk

@phk Dalam hal itu, bukankah lebih bijaksana untuk mengadopsi perilaku yang mirip dengan pip, yaitu default ke 3.4.2 ketika suatu versi tidak ditentukan, dan memungkinkan pengguna untuk secara eksplisit meminta 3.6 dengan sebuah flag? Hanya sebuah ide :)
dvtan

1
Ini berarti bahwa orang Debian harus mempertahankan semua versi Python ini untuk setiap versi Debian yang didukung. Tentu, itu bisa otomatis tetapi masih banyak. Selain itu, pengguna yang menginginkan versi yang lebih baru juga dapat menggunakan repositori khusus. Terkadang, pembuat perangkat lunak itu sendiri memelihara mereka untuk Debian dan distribusi Linux populer lainnya, misalnya dalam kasus Oracle VirtualBox .
phk

1
Python 3.6 (walaupun rc1) baru saja tiba di Debian eksperimental. Mungkin dimungkinkan untuk mendukungnya ke Jessie, mungkin dengan sedikit penyesuaian.
Faheem Mitha

Memperbarui. Bangunan selesai ini berhasil bagi saya di stabil Debian (jessie). Namun, itu tidak berarti itu akan menginstal dengan sukses dan tidak menyebabkan masalah. Langkah selanjutnya yang masuk akal adalah mengujinya pada uji VM stabil. Adakah yang peduli?
Faheem Mitha

Jawaban:


66

Catatan editorial:
Silakan baca komentar untuk jawaban ini.


Debian tidak memiliki Python 3.6 di repositori-nya, tetapi pengujian memilikinya.

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

Anda meminta:

prosedur yang tepat dan diterima secara resmi

tetapi saya harus menunjukkan bahwa ini bukan solusi resmi karena menggunakan repositori pengujian.


62
Peringatan: ini akan meningkatkan sistem Anda menjadi hibrid dari rilis debian apa pun yang Anda jalankan sekarang (mungkin 'stabil') plus 'tidak stabil' plus 'eksperimental'. Ini akan jauh lebih buruk daripada hanya mengubah-upgrade menjadi tidak stabil dan memetik beberapa paket dari percobaan, atau (lebih baik, tetap dengan stabil dan memetik-cherry dari backport dan / atau tidak stabil dan / atau eksperimental). Mengembalikan dari ini hampir mustahil. TIDAK dianjurkan kecuali Anda memiliki BANYAK pengalaman dengan kemasan debian dan debian
cas

8
jawaban yang diedit untuk mengatur rilis default apt ke stabil. dan menghapus 'apt-get upgrade' yang gila (yang memutakhirkan semuanya ke versi terbaru yang tersedia di tidak stabil atau eksperimental, kecuali untuk apa pun yang akan menyebabkan penghapusan paket lain). Itu seharusnya membuat prosedur ini jauh lebih tidak berbahaya tetapi tetap tidak aman. Dan masih belum direkomendasikan untuk pemula. 'Eksperimental' bukan untuk penggunaan biasa, itu untuk hal-hal aneh, belum teruji, mungkin rusak yang dapat bertentangan atau merusak hal-hal bahkan dalam 'tidak stabil'. Ini juga digunakan sebagai area pementasan untuk peningkatan multi-paket besar.
cas

1
jawaban yang diedit sebagai python 3.6.2 adalah (sekarang) di testingrepositori yang lebih aman untuk pengguna rata-rata.
m4p85r

4
Jangan coba ini - Anda butuh waktu lama untuk membatalkan
user3728501

2
Pada 9/15/2018 itu masih berisiko: Saya mencoba ini pada Raspberry Pi dengan regangan Debian dan mengalami kesalahan segmentasi setelah pemutakhiran Python 3.6 dari pengujian menarik libc6 dan libc6-dev yang diperbarui.
drott

154

Anda dapat menginstal Python-3.6di Debian 8 sebagai berikut:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

Disarankan untuk menggunakan make altinstallsesuai dengan situs web resmi .

Jika Anda ingin pipdimasukkan, Anda perlu menambah --with-ensurepip=installpanggilan konfigurasi Anda. Untuk lebih jelasnya lihat ./configure --help.

Peringatan: make installdapat menimpa atau menyamar biner python. make altinstallOleh karena itu disarankan daripada make installkarena hanya menginstal exec_prefix/bin/pythonversion.

Beberapa paket perlu diinstal untuk menghindari beberapa masalah yang diketahui, lihat: Masalah pembangunan yang umum (diperbarui)

Ubuntu / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

Alternatif libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

Alternatif openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Memperbarui

Anda dapat mengunduh yang terbaru python-x.y.z.tar.gzdari sini .

Untuk mengatur versi python default dan mudah beralih di antara mereka, Anda perlu memperbarui Anda update-alternativesdengan versi beberapa python.

Katakanlah Anda telah menginstal python3.7peregangan pada debian, gunakan perintah whereis pythonuntuk menemukan biner ( */bin/python). misalnya:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

Tambahkan versi python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

Yang python3.7dengan 50prioritas sekarang adalah python default Anda, yang python -Vakan mencetak:

Python 3.7.0b2

Untuk beralih di antara mereka, gunakan:

update-alternatives --config python

Output sampel:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

5
Jangan rekomendasikan debian guys checkinstall? Kalau tidak, akan lebih baik untuk menginstalnya ke /usr/localatau /opt.
Ivan Anishchuk

3
Menurut ./configure --helpPython 3.6 instal ke /usr/localper default.
Markus Strauss

3
Mengalami masalah dengan jawaban ini (mis., Modul SSL tidak tersedia atau zlib hilang)? Lihat: stackoverflow.com/a/41601137/972128
kkurian

11
Penafian: ini membutuhkan 20+ jam pada perangkat berdaya rendah seperti Pi nol.
Antoine Lizée

2
Versi 3.7ini keluar
Timo

32

Rekomendasi resmi adalah "Anda tidak benar-benar membutuhkan perangkat lunak yang lebih baru"

Jangan menderita Sindrom Stuff Baru yang Mengkilap - DontBreakDebian | Wiki Debian

Sebagian besar saran pada halaman tersebut diarahkan pada apa yang harus dilakukan jika Anda ingin perangkat lunak tersedia di seluruh sistem, tapi saya pikir itu tidak perlu dalam kasus ini.

Jika Anda mengambil sumber python, bangun interpreter 3.6 gunakan --prefixuntuk mengontrol di mana itu berakhir, dan kemudian gunakan virtualenvdengan --pythonopsi, maka Anda dapat menggunakan python 3.6 tanpa mempengaruhi apa pun di luar proyek Anda.

Prosesnya mungkin seperti ini:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

Jika Anda akan melakukan ini, Anda mungkin ingin mempertimbangkan --enable-optimizationsbendera pada configureskrip Python , yang tampaknya mengaktifkan beberapa fitur seperti pengoptimalan yang dipandu profil. Ini meningkatkan waktu pembuatan tetapi tampaknya menghasilkan juru bahasa yang lebih cepat sebesar 10% atau lebih menurut beberapa tolok ukur.


5
Ini mengikuti aturan Python umum "Praktis mengalahkan kemurnian". Saya cenderung menginstal python dari paket source di / opt / python-xyz dan kemudian menjalankan aplikasi dari virtualenvsnya sendiri.
zgoda

1
Catatan penting: jika Anda akan melakukan sesuatu seperti ini: pastikan bahwa pengguna apa pun yang menjalankan proses Python Anda tidak dapat memodifikasi virtualenv
Gregory Nisbet

1
Menurut saya ini adalah jawaban terbaik.
BringBackCommodore64

Terima kasih atas saran ini. Di masa lalu saya memecahkan beberapa instalasi debian dengan addon lebar sistem.
dibekukan

Dalam instal saya [venv]$ which pythonjangan memberi saya /home/<user>/pythonroot/bin/python, tetapi /home/<user>/app/venv/bin/python3sebaliknya ... mengapa?
dibekukan

12

Anda mungkin ingin melihatnya di pyenv: https://github.com/yyuu/pyenv . Mengutip dari pyenvtutorial di Amaral Lab:

Sebelumnya dikenal sebagai Pythonbrew, pyenv memungkinkan Anda mengubah versi global Python, menginstal beberapa versi Python, mengatur direktori (proyek) - versi Python khusus, dan ya membuat / mengelola lingkungan python virtual ("virtualenvs"). Semua ini dilakukan pada mesin * NIX-style (Linux dan OS X) tanpa tergantung pada Python itu sendiri dan bekerja pada tingkat pengguna - tidak perlu perintah sudo.


3
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
Archemar

Anda benar, akan mengubah jawabannya.
schaiba

1
Saya pikir dia bermaksud juga menyertakan baris perintah penting juga ...
not2qubit

Ini bekerja dengan baik, kecuali ketika Anda berurusan dengan perangkat tertanam. Untuk "menginstal" versi python, sumber diunduh dan dikompilasi secara lokal. Selain itu, pyenv adalah pilihan yang bagus dan memiliki banyak fleksibilitas, termasuk menjalankan versi python yang berbeda di direktori yang berbeda, dan menangani masalah PIP yang sangat mengganggu.
Brian Bulkowski

11

Cara yang saya sukai adalah menggunakan Anaconda atau Miniconda untuk menjaga versi python dan paket terinstal di Debian.

Semuanya disimpan dengan rapi di folder yang membuatnya mudah dihapus nanti jika diinginkan. Installer juga menambahkan path ke bashrc Anda (tambahkan sendiri jika Anda menggunakan shell lain).

Itu datang dengan pip, dan juga conda yang merupakan manajer paket lain daripada yang baik untuk pacakges yang lebih kompleks seperti numpy. Miniconda adalah instalasi tulang kosong, dan Anaconda adalah instalasi penuh dengan banyak paket, terutama dirancang untuk analisis data.

Segera:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Baca dan terima lisensi, jika Anda tidak menggunakan jalur bash add: export PATH="/home/$USER/miniconda3/bin:$PATH"

Uji:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

Instal dari PyPi:

# pip install fava

Instal dari conda:

# conda install numpy

Saat Anda ingin menghapusnya, hapus folder ~/miniconda3dan path di bashrc Anda.


Setelah masalah tanpa akhir dengan menginstal python dari sumber, versi ini bekerja dengan sempurna! Perhatikan bahwa jika Anda ingin bekerja dengan virtualenv (wrapper) untuk manajemen lingkungan, Anda perlu menambahkan direcotry perpustakaan miniconda LD_LIBRARY_PATH. Misalnya: tambahkan export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"ke .bashrc.
jrast

"Penginstal juga menambahkan path ke bashrc Anda" Itulah alasan utama mengapa saya tidak menggunakan anaconda. Diam-diam menutupi lingkungan python yang ada tidak sehat, untuk sedikitnya.
MisterMiyagi

3

Debian tidak memiliki Python 3.6 dalam repositori itu. Berikut cuplikan dari status Python3 saat ini:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

Anda dapat memeriksanya di sini .

Anda dapat menginstal 3,6 baik dari sumber, atau menggunakan sesuatu seperti Linuxbrew untuk instalasi direktori home.


3

Dengan ini

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

Berhasil bekerja.

Lebih lanjut: tetapkan python3.6 sebagai default

sudo alias python=/usr/bin/python3.6

Sekarang juga :

python --version
Python 3.6

Harus membacasudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
kemunduran

3
Jawaban ini sama dengan jawaban yang diterima, datang satu tahun kemudian, namun gagal memberikan perintah yang benar.
To 마 SE

1

Python 3.6 (walaupun rc1) baru saja tiba di Debian eksperimental. Saya berhasil membangun ini di atas stabil Debian (jessie). Lihat langkah-langkah terakhir dari bangunan yang disisipkan di bawah ini.

Namun, itu tidak berarti itu akan menginstal dengan sukses dan tidak menyebabkan masalah. Langkah selanjutnya yang masuk akal adalah mengujinya pada uji VM stabil. Jika ada yang peduli, saya bisa mencobanya - atau orang lain bisa mencobanya.

Versi rilis yang tepat akan tiba di Debian tidak stabil segera.

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.