Làm cách nào để cài đặt Python 3.6?


107

Tôi muốn cài đặt Python mới nhất, là 3.6 tại thời điểm đăng bài này. Tuy nhiên, kho lưu trữ nói rằng Python 3.4.2 là phiên bản mới nhất.

Tôi đã thử:

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

python3 is already the newest version.

$ python -V

Python 3.4.2

Để nâng cấp lên Python 3.6 trên máy trạm Windows của tôi, tôi chỉ cần tải xuống một exe, nhấp vào "tiếp theo" một vài lần và thế là xong. Quy trình phù hợp và chính thức được chấp nhận để cài đặt Python 3.6 trên Debian Jessie là gì?


6
Các kho lưu trữ Debian mặc định chứa các gói phần mềm được biên dịch riêng cho một phiên bản Debian nhất định. Ngoại trừ các bản cập nhật bảo mật (tốt nhất chỉ là một vài thay đổi cần thiết để khắc phục lỗ hổng bảo mật), các phiên bản mới của hầu hết các phần mềm có thể không có sẵn cho đến khi phát hành chính tiếp theo để tránh sự mất ổn định tiềm năng.
phk

@phk Trong trường hợp đó, sẽ không thận trọng khi áp dụng một hành vi tương tự như pip, tức là mặc định là 3.4.2 khi một phiên bản không được chỉ định và cho phép người dùng yêu cầu rõ ràng 3.6 với một cờ? Chỉ là một ý tưởng :)
dvtan

1
Điều này có nghĩa là mọi người Debian sẽ phải duy trì tất cả các phiên bản Python này cho mọi phiên bản Debian được hỗ trợ. Chắc chắn, nó có thể được tự động nhưng nó sẽ vẫn còn rất nhiều. Ngoài ra, người dùng quyền lực muốn có phiên bản mới hơn cũng có thể sử dụng kho tùy chỉnh. Đôi khi, chính các tác giả phần mềm đang duy trì chúng cho Debian và các bản phân phối Linux phổ biến khác, ví dụ như trong trường hợp của Oracle VirtualBox .
phk

1
Python 3.6 (mặc dù rc1) vừa xuất hiện trong thử nghiệm Debian. Có lẽ có thể backport nó cho Jessie, có thể với một chút điều chỉnh.
Faheem Mitha

Cập nhật. Việc xây dựng thành công này cho tôi trên Debian ổn định (jessie). Tuy nhiên, điều đó không có nghĩa là nó sẽ cài đặt thành công và không gây ra sự cố. Bước tiếp theo hợp lý sẽ là kiểm tra nó trên máy ảo thử nghiệm ổn định. Có ai quan tâm không?
Faheem Mitha

Câu trả lời:


66

Debian không có Python 3.6 trong kho của nó, nhưng thử nghiệm có nó.

$ 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

Bạn yêu cầu:

thủ tục thích hợp và chính thức được chấp nhận

nhưng tôi phải chỉ ra rằng đây không phải là giải pháp chính thức vì nó sử dụng kho kiểm tra.


62
Cảnh báo: điều này sẽ nâng cấp hệ thống của bạn thành một phiên bản hỗn hợp của bất kỳ bản phát hành debian nào bạn đang chạy (có thể là 'ổn định') cộng với 'không ổn định' cộng với 'thử nghiệm'. Điều này sẽ tồi tệ hơn nhiều so với việc chỉ nâng cấp lên không ổn định và chọn một vài gói từ thử nghiệm, hoặc (tốt hơn nữa, vẫn ổn định và chọn cherry từ backport và / hoặc không ổn định và / hoặc thử nghiệm). Hoàn nguyên từ điều này sẽ gần như không thể. KHÔNG được đề xuất trừ khi bạn có RẤT NHIỀU kinh nghiệm với bao bì debian và debian
cas

8
câu trả lời được chỉnh sửa để đặt bản phát hành mặc định của apt thành ổn định. và loại bỏ 'apt-get nâng cấp' điên rồ (nâng cấp mọi thứ lên các phiên bản mới nhất có sẵn trong bản không ổn định hoặc thử nghiệm, ngoại trừ mọi thứ có thể gây ra việc gỡ bỏ gói khác). Điều đó sẽ làm cho thủ tục này ít nguy hiểm hơn nhưng vẫn không an toàn. Và vẫn không được khuyến khích cho người mới. 'thử nghiệm' không dành cho sử dụng thông thường, nó dành cho những thứ kỳ lạ, chưa được kiểm chứng, có thể bị hỏng có thể xung đột hoặc phá vỡ mọi thứ ngay cả trong 'không ổn định'. Nó cũng được sử dụng như một khu vực tổ chức để nâng cấp nhiều gói lớn.
cas

1
câu trả lời được chỉnh sửa là python 3.6.2 (hiện tại) trong testingkho lưu trữ an toàn hơn cho người dùng trung bình.
m4p85r

4
Đừng thử điều này - bạn sẽ mất nhiều thời gian để hoàn tác
user3728501 16/12/17

1
Đây có phải là rủi ro để làm như đề xuất vào tháng 8 (hoặc tháng 12) 2017? Không rõ nữa sau khi @cas chỉnh sửa và đưa ra nhận xét của mình. Ai đó có thể theo dõi?
Brian Peterson

154

Bạn có thể cài đặt Python-3.6trên Debian 8 như sau:

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

Đó là khuyến cáo để sử dụng make altinstalltheo trang web chính thức .

Nếu bạn muốn pipđược bao gồm, bạn cần thêm --with-ensurepip=installvào cuộc gọi cấu hình của bạn. Để biết thêm chi tiết xem ./configure --help.

Cảnh báo: make installcó thể ghi đè hoặc giả trang nhị phân python. make altinstalldo đó được khuyến nghị thay vì make installchỉ cài đặt exec_prefix/bin/pythonversion.

Một số gói cần được cài đặt để tránh một số sự cố đã biết, xem: Các sự cố xây dựng phổ biến (đã cập nhật)

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

Thay thế của 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

Thay thế của openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Cập nhật

Bạn có thể tải về mới nhất python-x.y.z.tar.gztừ đây .

Để đặt phiên bản python mặc định và dễ dàng chuyển đổi giữa chúng, bạn cần cập nhật update-alternativesphiên bản nhiều python.

Giả sử bạn đã cài đặt python3.7đoạn mở rộng trên debian, hãy sử dụng lệnh whereis pythonđể xác định vị trí nhị phân ( */bin/python). ví dụ:

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

Thêm các phiên bản 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

Các python3.7với 50vấn đề cấp bách là python mặc định của bạn, python -Vý chí in:

Python 3.7.0b2

Để chuyển đổi giữa chúng, sử dụng:

update-alternatives --config python

Đầu ra mẫu:

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
Đừng đề nghị các chàng trai debian checkinstall? Nếu không, sẽ là khôn ngoan khi cài đặt nó /usr/localhoặc /opt.
Ivan Anishchuk

3
Theo ./configure --helpPython 3.6 cài đặt /usr/localtheo mặc định.
Markus Strauss

2
Gặp sự cố với câu trả lời này (ví dụ: mô-đun SSL không có sẵn hoặc thiếu zlib)? Xem: stackoverflow.com/a/41601137/972128
kkurian

11
Tuyên bố từ chối trách nhiệm: quá trình này mất hơn 20 giờ trên một thiết bị có công suất thấp như Pi zero.
Antoine Lizée

2
phiên bản 3.7ra
Timo

32

Đề xuất chính thức là "bạn không thực sự cần phần mềm mới hơn"

Đừng mắc phải Hội chứng thứ mới sáng bóng - DontBreakDebian | Debian Wiki

Hầu hết các lời khuyên trên trang đó đều hướng đến những việc cần làm nếu bạn muốn phần mềm có sẵn trên toàn hệ thống, nhưng tôi không nghĩ rằng điều đó là cần thiết trong trường hợp này.

Nếu bạn tìm nạp các nguồn python, hãy xây dựng trình thông dịch 3.6 bằng cách sử dụng --prefixđể kiểm soát nơi nó kết thúc, sau đó sử dụng virtualenvvới --pythontùy chọn, sau đó bạn có thể sử dụng python 3.6 mà không ảnh hưởng đến bất kỳ điều gì bên ngoài dự án của bạn.

Quá trình có thể diễn ra như thế này:

$ 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

Nếu bạn định làm điều này, bạn có thể muốn xem xét --enable-optimizationscờ trong configuretập lệnh Python , dường như cho phép một số tính năng như tối ưu hóa theo hướng dẫn hồ sơ. Nó tăng thời gian xây dựng nhưng dường như dẫn đến trình thông dịch nhanh hơn 10% hoặc hơn theo một số điểm chuẩn.


5
Điều này tuân theo quy tắc chung của Python về "Tính thực tế đánh bại độ tinh khiết". Tôi có xu hướng cài đặt pythons từ các gói nguồn trong / opt / python-xyz và sau đó chạy các ứng dụng từ virtualenvs của chính nó.
zgoda

1
Lưu ý quan trọng: nếu bạn định làm một cái gì đó như thế này: hãy đảm bảo rằng bất kỳ người dùng nào mà quy trình Python của bạn chạy đều không thể sửa đổi virtualenv
Gregory Nisbet

1
Theo tôi đây là câu trả lời tốt nhất.
BringBackCoosore64

Cảm ơn lời khuyên này. Trong quá khứ tôi đã phá vỡ một số cài đặt debian với addon toàn hệ thống.
đóng băng

Trong bản cài đặt của tôi [venv]$ which pythonkhông cho tôi /home/<user>/pythonroot/bin/python, mà /home/<user>/app/venv/bin/python3thay vào đó là tại sao?
đóng băng

12

Bạn có thể muốn xem tại pyenv: https://github.com/yyuu/pyenv . Để trích dẫn từ pyenvhướng dẫn tại Amaral Lab:

Trước đây được gọi là Pythonbrew, pyenv cho phép bạn thay đổi phiên bản Python toàn cầu, cài đặt nhiều phiên bản Python, thiết lập các phiên bản Python cụ thể (dự án) và có tạo / quản lý môi trường python ảo ("virtualenvs"). Tất cả điều này được thực hiện trên các máy kiểu * NIX (Linux và OS X) mà không phụ thuộc vào chính Python và nó hoạt động ở cấp độ người dùng, không cần bất kỳ lệnh sudo nào.


3
Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
Archemar

Bạn nói đúng, sẽ thay đổi câu trả lời.
schaiba

1
Tôi nghĩ rằng anh ta cũng có nghĩa là bao gồm các dòng lệnh thiết yếu nữa ...
not2qubit

Điều này hoạt động tốt, ngoại trừ khi bạn đang xử lý các thiết bị nhúng. Để "cài đặt" một phiên bản của python, nguồn được tải xuống và biên dịch cục bộ. Ngoài ra, pyenv là một lựa chọn tuyệt vời và có rất nhiều tính linh hoạt, bao gồm chạy các phiên bản python khác nhau trong các thư mục khác nhau và xử lý các vấn đề PIP rất khó chịu.
Brian Bulkowski

11

Cách ưa thích của tôi là sử dụng Anaconda hoặc Miniconda để giữ phiên bản mới nhất của python và các gói được cài đặt trên Debian.

Tất cả được giữ gọn gàng trong một thư mục giúp bạn dễ dàng gỡ bỏ sau này nếu muốn. Trình cài đặt cũng thêm đường dẫn đến bashrc của bạn (tự thêm nó nếu bạn sử dụng shell khác).

Nó đi kèm với pip, và cũng là conda, một trình quản lý gói khác có thể tốt hơn cho các nhịp điệu phức tạp hơn như numpy. Miniconda là một cài đặt xương trần, và Anaconda là một cài đặt đầy đủ với nhiều gói, chủ yếu được thiết kế để phân tích dữ liệu.

Mau:

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

Đọc và chấp nhận giấy phép, nếu bạn không sử dụng bash add path: export PATH="/home/$USER/miniconda3/bin:$PATH"

Kiểm tra:

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

Cài đặt từ PyPi:

# pip install fava

Cài đặt từ conda:

# conda install numpy

Khi bạn muốn xóa nó, hãy xóa thư mục ~/miniconda3và đường dẫn trong bashrc của bạn.


Sau những sự cố vô tận với việc cài đặt python từ nguồn, phiên bản này đã hoạt động hoàn hảo! Lưu ý rằng nếu bạn muốn làm việc với virtualenv (trình bao bọc) để quản lý môi trường, bạn cần thêm thư mục thư viện miniconda vào LD_LIBRARY_PATH. Ví dụ: thêm export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"vào của bạn .bashrc.
jrast

"Trình cài đặt cũng thêm đường dẫn đến bashrc của bạn" Đó là lý do chính khiến tôi không sử dụng anaconda. Nói một cách im lặng một môi trường trăn hiện tại là không lành mạnh, để nói rằng ít nhất.
MisterMiyagi

3

Debian không có Python 3.6 trong kho của nó. Dưới đây là ảnh chụp nhanh về trạng thái Python3 hiện tại:

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

Bạn có thể kiểm tra những điều này ở đây .

Bạn có thể cài đặt 3.6 từ nguồn hoặc sử dụng cái gì đó như Linuxbrew để cài đặt thư mục chính.


3

Với cái này

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

Làm việc thành công.

Thêm: đặt python3.6 làm mặc định

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

Ngay bây giờ :

python --version
Python 3.6

Nên đọcsudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
giảm

3
Câu trả lời này giống như câu trả lời được chấp nhận, đến một năm sau đó, nhưng không đưa ra các lệnh chính xác.
Đến 마 SE

1

Python 3.6 (mặc dù rc1) vừa xuất hiện trong thử nghiệm Debian. Tôi đã có thể xây dựng thành công cái này trên Debian ổn định (jessie). Xem các bước cuối cùng của bản dựng được dán bên dưới.

Tuy nhiên, điều đó không có nghĩa là nó sẽ cài đặt thành công và không gây ra sự cố. Bước tiếp theo hợp lý sẽ là kiểm tra nó trên máy ảo thử nghiệm ổn định. Nếu bất cứ ai quan tâm, tôi có thể thử nó - hoặc người khác có thể thử.

Một phiên bản phát hành phù hợp sẽ sớm xuất hiện trong Debian không ổn định.

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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.