Làm cách nào để cài đặt phiên bản Python khác bằng apt-get?


125

Làm cách nào tôi có thể cài đặt phiên bản Python khác bằng apt-get?

Rõ ràng tôi nhận ra rằng tôi có thể cài đặt bằng cách sử dụng bóng tar nguồn, tuy nhiên tôi không muốn cài đặt từ nguồn và thay vào đó sử dụng trình quản lý gói, vì đó là những gì nó có. Chắc chắn ở đâu đó có uy tín xây dựng các tệp .deb cho các bản phát hành Python mới nhất (tại sao python.org không nằm ngoài tôi) mà tôi có thể tham khảo.

Tôi cần làm gì để tham khảo chúng và nó có thể tạo ra vấn đề gì khi nâng cấp lên phiên bản tiếp theo?

Nếu không có cách nào ngoại trừ việc xây dựng từ nguồn, có gói (giả) nào mà tôi có thể cài đặt sẽ cung cấp tất cả các phụ thuộc cần thiết mà không phải tìm và cài đặt riêng lẻ không? Vì vậy, tôi không nhận được:

The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_dbm                  _gdbm                 _lzma              
_sqlite3              _ssl                  _tkinter           
readline              zlib  


Bạn đã bao giờ nhận được E: Couldn't find any package by regex 'python3.5'và do đó không cài đặt qua apt-get install python3.5?
Charlie Parker


Một số gợi ý hay tại đây: quora.com/ Kẻ
Charlie Parker

1
@CharlieParker Bạn đã thử cài đặt Anaconda chưa?
M. Becerra

Câu trả lời:


169

Về cơ bản, Felix Krull điều hành PPA cung cấp bất kỳ phiên bản Python nào (nghiêm túc, có bản dựng 2.3.7 cho sinh động ...) cho nhiều bản phát hành Ubuntu tại https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa .

Làm như thường lệ:

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

Nó sẽ không ghi đè lên hiện tại của bạn python3.4mà vẫn được liên kết như là python3.

KHÔNG thay đổi liên kết tượng trưng! Rõ ràng có nhiều chức năng hệ thống không hoạt động đúng với python3.5.

Tôi đã thử điều này và sau đó không thể mở một thiết bị đầu cuối, trình cập nhật phần mềm, ...

cd /usr/bin
sudo rm python3

Việc nâng cấp lên Wily sẽ điều chỉnh gói meta python3để trỏ đến python3.5. Tôi không mong đợi bất kỳ sự cố nào, nhưng tại thời điểm này, kho lưu trữ nước ngoài không còn cần thiết nữa. Vì vậy, để thực sự an toàn, bạn có thể lọc PPA trước khi thực hiện nâng cấp.


5
cho noob ra khỏi đó, đừng symlink! cũng không liên kết chỉ có nghĩa là bạn cần nhập python3.5 từ dòng lệnh để chạy python 3.5
Chris Hawkes

4
Bạn có thể chỉ cho tôi, làm thế nào tôi có thể sử dụng pip của 3,4 với 3,5 này không?
Groosha

2
@ kondra007 Tôi đã làm theo hướng dẫn từ pip.pypa.io/en/urdy/installing (vui lòng đọc cảnh báo ở đó) và hai lệnh này wget https://bootstrap.pypa.io/get-pip.py; sudo python3.5 get-pip.pyđã cho tôi một pip hoạt động cho python 3.5 nhưng pip3.4 không hoạt động nữa. Nếu ai biết rõ hơn xin vui lòng bình luận
ndemou 24/07/2016

2
Ngoài ra để đặt python3.5 làm mặc định ~$ vim ~/.bashrcvà thêm cái này alias python=python3.5. sau đó~$source ~/.bashrc
Máy tính của Krishnadas

1
Mẹo: nếu add-apt-repository: command not found, chạy apt-get install software-properties-common python-software-propertiesđể cài đặt
Mithril

35

Liên kết Youtube này đã giúp tôi cài đặt nó.

Các bước là:

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

Để kiểm tra xem python đã được cài đặt chưa, hãy gõ loại python3.5khác:

sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5

3
OP cho biết ông không muốn biên dịch từ nguồn
Michael Bates

3
Có bạn đúng. Ngoài ra, tổng hợp từ nguồn có thể giới thiệu một số vấn đề phụ thuộc hơn nữa. Nhưng đó là cách tôi giải quyết nó. Nếu có một cách tốt hơn tôi chắc chắn sẽ muốn biết.
joydeep bhattacharjee 10/2/2016

5
Hãy xem xét ./configure --enable-optimizations stackoverflow.com/questions/41405728/ từ
warvariuc

1
@CharlieParker vì Python không được tạo cho một HĐH cụ thể. Nó có nghĩa là được chạy ở bất kỳ nền tảng nào. Đối với Linux, điều này có nghĩa là mỗi phiên bản phải được biên dịch và phân phối cho từng phiên bản của mỗi bản phân phối Linux (trong đó có nhiều phiên bản) hoặc chúng phân phối nguồn và cho phép người dùng tự biên dịch nó trong môi trường mà nó sẽ được biên dịch đã sử dụng. Điều thứ hai là khả thi hơn nhiều.
CJStuart

2
Bạn cũng cần trình biên dịch c / c ++ từapt-get install build-essential
bato3

13

Chỉ cần làm theo các bước (đã kiểm tra):

Bước 1 - Cài đặt các gói cần thiết

Sử dụng lệnh sau để cài đặt các điều kiện tiên quyết cho Python trước khi cài đặt nó.

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

Bước 2 - Tải xuống Python 3.5.2

Tải xuống Python bằng lệnh sau từ trang web chính thức của python. Bạn cũng có thể tải xuống phiên bản mới nhất thay cho chỉ định dưới đây.

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

Bây giờ giải nén gói đã tải xuống.

sudo tar xzf Python-3.5.2.tgz

Bước 3 - Biên dịch mã Python

Sử dụng bộ lệnh dưới đây để biên dịch mã nguồn python trên hệ thống của bạn bằng cách sử dụng altinstall.

cd Python-3.5.2
sudo ./configure
sudo make altinstall

make altinstallđược sử dụng để ngăn thay thế tệp nhị phân python mặc định /usr/bin/python.

Bước 4 - Kiểm tra phiên bản Python

Kiểm tra phiên bản mới nhất được cài đặt của python bằng lệnh bên dưới.

$ python3.5 -V

Python 3.5.2

Nguồn .


2
+1 để sử dụng altinstall theo mặc định. Không có nhiều kịch bản thực tế nơi bạn có thể sống chỉ với một phiên bản. Ngay cả các hệ thống với Python3 là mặc định, bạn có thể buộc phải cài đặt Python dưới dạng đảo ngược -> Python2 thay vào đó hoặc thêm Python2.
erm3nda

1
Tôi đã gặp một lỗi như được mô tả ở đây - bug.python.org/su31652 đã phải chạy sudo apt-get install libffi-devđể giải quyết nó.
Nishan Chathuranga

Tôi cũng sẽ thêm sudo apt-get install liblzma-devđể kích hoạt hỗ trợ lzma.
v.grabovets

6

Theo như tôi có thể nói, ít nhất là trong một container docker, người ta có thể dứt khoát apt-gettrăn 3.

Đầu tiên tôi chạy vào một thùng chứa Ubuntu với container:

docker run -it --rm ubuntu:latest bash

sau đó vì một số lý do cần phải cập nhật một số thứ trên Ubuntu vì vậy tôi đã làm (bên trong container):

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

và sau đó tôi chỉ cần cài đặt python3 và có vẻ như nó tự động có python 3.5:

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

và để kiểm tra nếu pip hoạt động cho phép tải xuống một cái gì đó:

pip3 install tensorflow

tất cả dường như làm việc tốt cho tôi

Lưu ý quan trọng: có vẻ như nếu bạn đã cài đặt python 3.4 thì apt-get install python3không hoạt động vì nó cho biết bạn đã có nó. Có vẻ như đó là một trong những vấn đề của tôi bởi vì tôi đã bắt đầu từ một hình ảnh docker từ tenorflow (đặc biệt gcr.io/tensorflow/tensorflow:latest-devel-py3) và một cái gì đó trong hình ảnh đó (tôi cho rằng họ đã có python 3.4 nhưng nó có thể là thứ khác) không cho phép tôi cập nhật con trăn của tôi để lấy con trăn 3.5.


tín dụng: Tôi đã phát hiện ra điều này khi tôi hỏi như sau: https://stackoverflow.com/questions/42122826/can-one-use-python-3-5-in-a-docker-container-basing-out-of-the -tensorflow-docker


Lưu ý: người ta cũng có thể chỉ cần cài đặt Anaconda. Đối với một ví dụ docker người ta có thể làm:

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

từ trang web chính thức của họ: https://hub.docker.com/r/continuumio/anaconda3/

Giải pháp này cài đặt python 3.6 nhưng tôi chắc chắn nếu bạn nhìn vào đó, bạn có thể nhận được python 3.5 nếu đó là những gì bạn muốn.

Lưu ý: có lẽ bạn nên sử dụng một môi trường ảo như env ảo hoặc conda / anaconda trừ khi bạn sử dụng docker. Chỉ muốn nhắc nhở mọi người.


1
"trong một container docker" là một tuyên bố rất chung chung: tất cả phụ thuộc vào hình ảnh mà container chứa dựa trên, ví dụ như phiên bản Ubuntu nào. Hơn nữa, có thể có các phiên bản nhỏ như 3.5 hoặc 3.6 không có sẵn trong một phiên bản Ubuntu (ví dụ 14.04)
giorgiosironi

2

Có một số bản phân phối python mới hơn có sẵn để cài đặt thông qua apt-get được liệt kê trong Gói Ubuntu

như một ví dụ các phiên bản sau hiện đang có sẵn:

trăn2.7

trăn3.2

trăn3.4

trăn3,5

trăn3.6

Tính khả dụng thay đổi khi phát hành Ubuntu ở một mức độ. Ví dụ 3.5 có sẵn cho Xenial, Yakkety và Zesty và 3.6 có sẵn cho Yakkety và Zesty nhưng bạn phải kích hoạt kho vũ trụ nếu không được bật để có được chúng thông qua apt-get. Để kiểm tra tính khả dụng cho phiên bản Ubuntu của bạn, hãy kiểm tra các liên kết ở trên.

Một cái nhìn nhanh cho thấy câu trả lời này vẫn còn hiệu lực vì PPA có 3.6 ngay cả đối với Trusty.


các phiên bản Python có sẵn trong Ubuntu Repo không phải là phiên bản Python mới nhất .
yaitloutou

@yaitloutou Câu hỏi cho biết "mới hơn" không phải "mới nhất" Bằng mọi cách, hãy thoải mái viết một câu trả lời tốt hơn.
Anh Cả Geek

Bạn đã đúng, nhưng vì mới hơn tương đối với những gì không được chỉ định nên tôi đã hiểu nó là mới nhất :)
yaitloutou

@yaitloutou Hãy thoải mái và bằng mọi cách hãy viết một câu trả lời tốt hơn! Tôi chắc chắn rằng nó sẽ được đánh giá cao.
Anh Cả Geek

Tôi mới bắt đầu hoạt động ở đây và tôi vẫn đang học. Xin lỗi nếu bạn thấy nhận xét của tôi về câu trả lời của bạn gây khó chịu
yaitloutou

0

Tôi sẽ xem xét sử dụng môi trường ảo thay vì cài đặt các phiên bản python thông qua apt-get.

Sử dụng môi trường ảo, xem ở đây, là một thực hành tốt để phát triển với python. Họ cho phép bạn cách ly môi trường python của bạn với các phiên bản python được cài đặt hệ thống.

Ngoài ra, bạn không phải truy cập sudo trong khi cài đặt bất kỳ thư viện nào (thông qua pip, v.v.).


11
Tôi nghĩ bạn cần cài đặt phiên bản python mà bạn muốn trước khi bạn có thể sử dụng nó trong môi trường ảo.
Nzbuu

1
Bạn cài đặt phiên bản python mong muốn trong môi trường ảo, hơn là bạn thay đổi đường dẫn liên quan đến python bằng cách chạy tập lệnh "kích hoạt" trong môi trường ảo.
devrimbaris

Đây thực sự là chính xác những gì tôi muốn làm, điều đầu tiên tôi đã thử làm sau khi làm theo câu trả lời của @ Nepeavere là chỉ vào nó bằng cách sử dụng virtualenv -p. Nhưng nó đã xuất hiện với "ImportError: không thể nhập tên 'HTTPSHandler'".
Michael Scheper

1
Tại sao điều này bị hạ thấp? envs ảo thường hoạt động tốt.
Charlie Parker

Làm thế nào để bạn cài đặt một env ảo trong ubfox (như trong đề xuất của bạn) nhưng với python 3.5?
Charlie Parker

0

Conda được cập nhật tích cực và cho phép bạn cài đặt nhiều phiên bản python trong các venv được quản lý mà không cần thiết lập tất cả. Các vấn đề đường dẫn mở rộng nhị phân có thể đã được giải quyết trong nhiều chuỗi phụ thuộc / chuỗi pip được quản lý bởi Anaconda mà nó sử dụng.

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.