Cập nhật Python trên hệ thống Ubuntu


78

Tôi muốn cập nhật bản dựng Python trên hộp Linux của mình, nhưng cách duy nhất tôi biết cách thực hiện là gỡ cài đặt phiên bản hiện tại và cài đặt bản mới. Hệ thống của tôi đã được cập nhật (tôi đã cập nhật ngày hôm qua). Tôi muốn biết nếu có một cách để cập nhật một chương trình cụ thể từ dòng lệnh, như thế nào sudo apt-get update <program-name>. Tôi biết lệnh này không tồn tại, nhưng tôi hy vọng điều gì đó tương đương.


Nếu hệ thống của bạn được cập nhật thì Python cũng trên hệ thống của bạn (theo kho của bạn). Tôi có lầm không?
cYrus

Câu trả lời:


64

Như những người khác đã lưu ý, Bare sudo apt-get install packagesẽ cài đặt phiên bản mới nhất có sẵn, thay thế phiên bản cũ hơn nếu cần.

Nhưng với một số phần mềm (trong đó có Python) thì tình hình có hơi khác. Một số phiên bản chính, rất và không thể thay đổi khác nhau có các gói riêng . Chẳng hạn, Python 2.6 , Python 2.7 , Python 3.1 đều sống trong các gói riêng biệt trên Ubuntu.

Điều đặc biệt quan trọng là một trong những chính sách của Ubuntu là sử dụng rộng rãi Python để viết phần mềm cho người dùng cuối. Vì vậy, trên thực tế, phần khá lớn của hệ thống được viết bằng Python. Hiện tại, mã chạy trên Python 2.6 - vì vậy phiên bản này là mặc định khi cài đặt; và mã sẽ không dễ dàng chạy trên, giả sử, Python 2.7 - vì không tương thích tồn tại. Để chuyển hệ thống sang Python 2.7, cần phải thực hiện một phần công việc, bao gồm cập nhật và kiểm tra lại tất cả các tập lệnh. Điều này không thể được thực hiện dễ dàng; nghĩa là, bạn không thể "chuyển" hệ thống của mình sang Python 2.7 và xóa phiên bản cũ hơn.

Nhưng. Nếu bạn không quan tâm đến các bánh răng ưa thích của hệ thống của bạn và chỉ cần Python mới hơn - không gặp trở ngại nào. Đi và sudo apt-get install python3mã cho 3.x Python dũng cảm; chỉ cần nhớ khởi chạy các tập lệnh của bạn với python3và sử dụng #!/usr/bin/env python3dòng shebang.


6
Chi tiết tuyệt vời về hoạt động phía sau hậu trường.
hiệu

16
sudo apt-get install python 3.3.3

đây là cho python (3.3.3) cho các phiên bản khác nhau, nên sử dụng số phiên bản tương ứng.


4
Tôi nghĩ không gian giữa python và phiên bản không nên ở đó. sudo apt-get install python3.6làm việc với tôi, nhưng không ảnh hưởng đến Python 3.5 dưới bất kỳ hình thức nào.
GUI Junkie

sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... Các đối số riêng biệt cho apt biết để cài đặt nhiều gói
Clancy Hood

3
Sau khi cài đặt số phiên bản python của tôi là giống nhau? Điều gì có thể là lý do?
Ramesh Pareek

Tôi đã sử dụng phương pháp này, nhưng không thể tìm thấy nơi nó được cài đặt (tức là cách mở shell 3.7). @RameshPareek đây cũng có thể là vấn đề của bạn. không có vẻ là trong / usr / bin. python is already the newest version (2.7.12-1~16.04). python set to manually installed.có ý kiến ​​gì không
Người hâm mộ số một của Bjork

9
sudo apt-get install python3.6

Điều này cài đặt python 3 trong linux cùng với python 2. Để truy cập python 3 nhập sau khi bạn mở terminal.

python3

2
Điều này trùng lặp một câu trả lời khác và không thêm nội dung mới. Vui lòng không đăng câu trả lời trừ khi bạn thực sự có điều gì đó mới để đóng góp.
DavidPostill

3
xin lỗi tôi chỉ muốn viết lệnh để lấy cái mới
G-Ox7cd

6
Nếu tôi chạy mà tôi nhận đượcE: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa

1
sudo add-apt-repository ppa: dowsnakes / ppa -y && sudo apt-get update
Ski_squaw

E: Unable to locate package python3.6
dims

4

Bạn gần gũi với việc nghĩ ra một lệnh như sudo apt-get update(đó là một lệnh thực tế, nhưng không làm những gì bạn muốn.)

Để nâng cấp Python và mọi thứ khác bạn đã cài đặt, chỉ cần thực hiện lệnh:

sudo apt-get upgrade

Cảm ơn, nhưng tôi đã biết về lệnh cập nhật, đó là lý do tại sao tôi đăng thực tế là hệ thống của tôi đã được cập nhật. Tôi đã hy vọng tìm thấy một lệnh có thể được nhắm mục tiêu đến các ứng dụng cụ thể.
hiệu

apt sẽ không nâng cấp bất cứ điều gì cập nhật, vì vậy nó sẽ không tạo ra sự khác biệt; p
Journeyman Geek

OP muốn cập nhật python cụ thể . Nói với họ để cập nhật tất cả các gói họ có là một lời khuyên lười biếng và tồi tệ.
Przemek D

3

Từ trang web chị em của chúng tôi: https://askubfox.com/questions/44122/how-to-upTHER-a-single-package-USE-apt-get

Mỗi lệnh này được cập nhật bằng cách cài đặt, sẽ hoạt động tốt trong nhiều trường hợp, nhưng có thể không phải là thứ bạn đang tìm kiếm trong một trường hợp cụ thể.

Nếu bạn chỉ muốn nâng cấp một gói cụ thể VÀ chỉ khi nó đã được cài đặt, thì hãy sử dụng lệnh:

sudo apt-get install --only-upgrade packagename

3

Trong trường hợp bạn đang tìm cách chỉ nâng cấp phiên bản nhỏ của gói python như 2.7.11+ t0 2.7.12 thì sudo apt-get install python2.7nên làm gì cho bạn


2

pyenv có thể là một lựa chọn tốt cho bạn: https://github.com/yyuu/pyenv


Liên quan đến câu trả lời của @ ulidtko , một giải pháp thay thế hoàn toàn có thể thay thế toàn bộ hệ thống python có thể là sử dụng một môi trường biệt lập với phiên bản python mong muốn của bạn. Điều này tương tự như một "môi trường ảo", nhưng đối với chính con trăn. Tôi đã sử dụng điều này trong quá khứ cho các dự án cũ chạy trên python 2.6, cũng như khi nâng cấp từ phiên bản kế thừa của python lên python3.


Tôi không quen thuộc với khu vực này, nhưng bạn có thể giải thích cách giải quyết câu hỏi này và giải quyết vấn đề không?
Ben N

1
Liên quan đến câu trả lời của @ ulidtko ( superuser.com/a/241903/152143 ), một sự thay thế khả dĩ để thay thế hoàn toàn python hệ thống có thể là sử dụng một môi trường biệt lập với phiên bản python mong muốn của bạn. Điều này tương tự như một "môi trường ảo", nhưng đối với chính con trăn. Tôi đã sử dụng điều này trong quá khứ cho các dự án cũ chạy trên python 2.6, cũng như khi nâng cấp từ phiên bản kế thừa của python lên python3.
đẹp vào

1
apt-get install python

Tôi tin rằng điều này nên làm việc. Bạn sẽ cần phải thay đổi 'python' để khớp với tên gói phù hợp trong kho lưu trữ của bạn.


1

Như chúng ta đều biết rằng Python đi kèm với phiên bản 3.5. Vì vậy, rất đơn giản để cập nhật Python 2.7 (theo mặc định có trong Ubuntu 16.04) lên Python 3.5.

Thực hiện theo các bước sau:

  1. Mở thiết bị đầu cuối.
  2. Trở thành người dùng root bằng cách sử dụng lệnh sudo.
  3. Sử dụng mã dưới đây để cập nhật Python 2.7 lên 3.5

    sudo apt-get cài đặt python3.5

  4. Bạn sẽ được yêu cầu cho phép, sau đó Đưa ra tùy chọn Y.

  5. Đợi đến khi hoàn thành quá trình.
  6. xóa màn hình bằng cách sử dụng lệnh clear
  7. Kiểm tra phiên bản python bằng lệnh dưới đây.

    trăn


1
Vui lòng sử dụng định dạng phù hợp trong tương lai và tránh xa các tuyên bố như "Hy vọng điều này sẽ giúp bạn." chúng chỉ là tiếng ồn. Bằng cách trả lời câu hỏi, nó được giả định, việc bạn cố gắng trả lời câu hỏi bằng một cái gì đó hữu ích. Bạn nên xem qua câu trả lời của mình và sửa những lỗi ngữ pháp nhỏ mà tôi không sửa và cung cấp ảnh chụp màn hình của quy trình. Tôi đã sửa định dạng cho bạn lần này, tôi sẽ không làm lại lần nữa, tôi tin chắc rằng các tác giả nên được giữ lại để sửa câu trả lời và câu hỏi của riêng họ.
Ramhound

Và nó không đơn giản, điều này không cập nhật các liên kết tượng trưng một cách chính xác để bạn kết thúc với 3,4 và 3,5 cạnh nhau. Python2 thường song song với python3, chúng tôi không nâng cấp Python2 lên Python3, chúng tôi di chuyển công việc của mình.
mckenzm

0

Trong trường hợp duy nhất bạn đang chạy phiên bản LTS, con trăn của bạn có thể bị chậm lại bởi một phiên bản nhỏ, giả sử 2.7.5 thay vì 2.7.10.

Một khả năng sẽ là nâng cấp hệ thống :

  • đặt prompt=normaltrong/etc/update-manager/release-upgrades
  • nâng cấp hệ thống
    • trên dòng lệnh, bạn có thể nhập sudo do-release-upgradeđể làm cho trình quản lý nâng cấp thực hiện công việc của mình để nâng cấp lên phiên bản mới nhất (= không phải LTS).
    • giải pháp GUI sử dụng Trình quản lý cập nhật

Như mọi khi khi nâng cấp, hãy xem các ghi chú phát hành , vì một số trường hợp nâng cấp có thể phá vỡ hệ thống của bạn trong một vài trường hợp, xem bình luận của @ Gino .


Anh bạn, tôi đã thử thay đổi của bạn và nó đã phá vỡ hệ thống Ubuntu 14.04 của tôi! Về cơ bản, nó đã cố cập nhật từ 14.04 lên Ubuntu 15 và không thể thực hiện thành công, khiến hệ thống của tôi ở trạng thái nửa vời khi đăng nhập đồ họa không còn hoạt động - ví dụ: tôi sẽ đăng nhập qua đăng nhập đồ họa và nó sẽ khởi động tôi trở lại để đăng nhập đồ họa tương tự. Chỉ cần dành một giờ qua + cài đặt lại Ubuntu 14.04 vào máy của tôi để khắc phục sự cố phá vỡ giải pháp có mục đích của bạn .
Gino

@Gino: Cảm ơn bạn đã phản hồi. Bạn đã có một cái nhìn askubuntu.com/questions/612973/... , askubuntu.com/questions/223501/... và ghi chú phát hành? Có một vấn đề với "trình điều khiển fglrx của AMD". Bạn có muốn giúp đỡ gì khác không?
serv-inc

Tôi nghĩ đề xuất của bạn, để tránh các kiểm tra an toàn thông thường, do đó cho phép nâng cấp lên phiên bản không phải LTS là đầy nguy hiểm. Cho đến ngày nay, tôi không biết tại sao việc nâng cấp thất bại, vì nó không hiển thị bất kỳ thông báo lỗi có thể chẩn đoán nào. Thay vào đó, tôi đã kết thúc với một hệ thống không còn sử dụng được nữa. Nếu tôi nhớ chính xác, cuối cùng tôi đã chạy lại cài đặt Ubuntu với một số cài đặt nhất định có thể khôi phục hầu hết hệ thống của tôi. Và, như một lưu ý phụ, tôi là một lập trình viên chuyên nghiệp, vì vậy tôi thường biết cách của mình xung quanh một hệ thống linux.
Gino

@Gino: Đây dường như là quy trình chuẩn để chuyển từ LTS sang không LTS. Đó là [thay đổi] mức độ nhận thức của các bản phát hành mới. Người ta có thể đặt bản này thành bản phát hành "được hỗ trợ" (thông thường), bản phát hành "chỉ dài hạn" (LTS) hoặc thậm chí là "không có gì" (không có bản nâng cấp lớn). "'Để biết trích dẫn, hãy xem Askubfox.com/questions/240160/ . Nó sử dụng trình quản lý nâng cấp của hệ thống. Thật không may, trong trường hợp của bạn, bản nâng cấp (mặc định) không hoạt động, có thể là do trình điều khiển đồ họa có lỗi (xem các liên kết ở trên).
serv-inc
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.