Làm thế nào để cập nhật Python?


135

Tôi đã cài đặt phiên bản 2.7 từ đầu năm 2012. Tôi không thể tìm thấy bất kỳ sự đồng thuận nào về việc tôi có nên gỡ cài đặt hoàn toàn và xóa phiên bản này hay không trước khi đưa lên phiên bản mới nhất.

"Mềm" - tạo ra các phiên bản cũ? Khó gỡ / lau phiên bản cũ? Cài đặt trên đầu trang?

Tôi đã thấy ở đâu đó một quá trình cài đặt / nâng cấp đặc biệt bằng cách sử dụng phương pháp "phân đoạn" các cài đặt Python, giữ cho các phiên bản khác nhau tách biệt và tách biệt, nhưng có chức năng. Không chắc chắn nếu đây là cách tiêu chuẩn, thực tế.

Tôi cũng tự hỏi nếu Revo trở nên quá hăng hái và có thể gây ra vấn đề với việc xóa sạch tàn dư vẫn cần thiết, như các biến môi trường / PATH.

(Win7 x64, Python 32 bit)


1
Dù sao thì 2.7 vẫn là phiên bản mới nhất trong sê-ri 2.x. 3.x không tương thích ngược. nếu bạn muốn nâng cấp lên bản phát hành 2.7 hiện tại, tôi chỉ cần cài đặt trên đầu trang.
Eevee

Câu trả lời:


106
CẬP NHẬT : 2018-07-06

Bài này bây giờ đã gần 5 tuổi! Python-2.7 sẽ ngừng nhận các bản cập nhật chính thức từ python.org vào năm 2020 . Ngoài ra, Python-3.7 đã được phát hành . Hãy xem Python-Future về cách làm cho mã Python-2 của bạn tương thích với Python-3. Để cập nhật conda, tài liệu hiện khuyên bạn nên sử dụng conda update --alltrong từng môi trường conda của mình để cập nhật tất cả các gói và tệp thực thi Python cho phiên bản đó. Ngoài ra, vì họ đã đổi tên thành Anaconda, tôi không biết liệu các khóa đăng ký Windows có còn như cũ không.

CẬP NHẬT : 2017-03-24

Không có bản cập nhật nào cho Python (x, y) kể từ tháng 6 năm 2015, vì vậy tôi nghĩ sẽ an toàn khi cho rằng nó đã bị bỏ rơi.

CẬP NHẬT : 2016-11-11

Như @cxw bình luận bên dưới , những câu trả lời này dành cho cùng một phiên bản bit và theo phiên bản bit, ý tôi là 64 bit so với 32 bit. Ví dụ: những câu trả lời này sẽ áp dụng cho việc cập nhật từ Python-2.7.10 lên 64-bit Python-2.7.11, tức là : cùng một phiên bản bit. Mặc dù có thể cài đặt hai phiên bản bit khác nhau của Python với nhau, nhưng nó sẽ yêu cầu một số hack, vì vậy tôi sẽ lưu bài tập đó cho người đọc. Nếu bạn không muốn hack, tôi khuyên bạn rằng nếu chuyển đổi phiên bản bit, trước tiên hãy xóa phiên bản bit khác.

CẬP NHẬT : 2016-05-16
  • AnacondaMiniConda có thể được sử dụng với cài đặt Python hiện có bằng cách vô hiệu hóa các tùy chọn để thay đổi Windows PATHvà Registry. Sau khi giải nén, hãy tạo một liên kết tượng trưng condatrong binhoặc cài đặt conda từ PyPI. Sau đó, tạo một symlink tên là conda-activateđể activatetrong thư mục bin gốc Anaconda / Miniconda. Bây giờ Anaconda / Miniconda giống như Ruby RVM. Chỉ cần sử dụng conda-activate rootđể kích hoạt Anaconda / Miniconda.
  • Python di động không còn được phát triển hoặc bảo trì.

TL; DR

  • Sử dụng Anaconda hoặc miniconda , sau đó chỉ cần thực hiện conda update --allđể giữ cho mỗi môi trường conda được cập nhật,
  • cùng lớn phiên bản chính thức Python ( ví dụ 2.7.5), chỉ cần cài đặt trên cũ ( ví dụ 2.7.4),
  • phiên bản chính khác nhau của Python chính thức ( ví dụ 3.3), cài đặt song song với cũ, đặt đường dẫn / liên kết để trỏ đến chiếm ưu thế ( ví dụ 2.7), lối tắt sang khác ( ví dụ trong BASH $ ln /c/Python33/python.exe python3).

Câu trả lời phụ thuộc:

  1. Nếu OP có 2.7.x và muốn cài đặt phiên bản 2.7.x mới hơn, thì

    • Nếu sử dụng trình cài đặt MSI từ trang web Python chính thức , chỉ cần cài đặt trên phiên bản cũ, trình cài đặt sẽ đưa ra cảnh báo rằng nó sẽ xóa và thay thế phiên bản cũ hơn; tìm kiếm trong "chương trình đã cài đặt" trong "bảng điều khiển" trước và sau khi xác nhận rằng phiên bản cũ đã được thay thế bằng phiên bản mới; các phiên bản mới hơn của 2.7.x tương thích ngược nên điều này hoàn toàn an toàn và do đó IMHO nhiều phiên bản 2.7.x không bao giờ cần thiết.
    • Nếu xây dựng từ nguồn, thì có lẽ bạn nên xây dựng trong một thư mục mới, sạch sẽ, rồi chỉ đường dẫn đến bản dựng mới sau khi vượt qua tất cả các thử nghiệm và bạn tự tin rằng nó đã được xây dựng thành công, nhưng bạn có thể muốn giữ lại bản cũ xây dựng xung quanh vì xây dựng từ nguồn đôi khi có thể có vấn đề. Xem hướng dẫn của tôi để xây dựng Python x64 trên Windows 7 với SDK 7.0 .
    • nếu cài đặt từ một bản phân phối như Python (x, y) , hãy xem trang web của họ. Python (x, y) đã bị bỏ rơi. Tôi tin rằng các bản cập nhật có thể được xử lý từ bên trong Python (x, y) với trình quản lý gói của chúng, nhưng các bản cập nhật cũng được đưa vào trang web của chúng . Tôi không thể tìm thấy một tài liệu tham khảo cụ thể để có lẽ người khác có thể nói chuyện này. Tương tự như ActiveState và có lẽ là Enth think, Python (x, y) nói rõ rằng nó không tương thích với các bản cài đặt khác của Python:

      Bạn nên gỡ cài đặt mọi bản phân phối Python khác trước khi cài đặt Python (x, y)

    • Enth think Canopy sử dụng MSI và sẽ cài đặt vào Program Files\Enthoughthoặc home\AppData\Local\Enthought\Canopy\Appcho tất cả người dùng hoặc cho mỗi người dùng tương ứng. Cài đặt mới hơn được cập nhật bằng cách sử dụng công cụ cập nhật tích hợp. Xem tài liệu của họ .
    • ActiveState cũng sử dụng MSI để cài đặt mới hơn có thể được cài đặt trên các cài đặt cũ hơn. Xem ghi chú cài đặt của họ .

      Các cài đặt Python 2.7 khác trên Windows, ActivePython 2.7 không thể cùng tồn tại với các cài đặt Python 2.7 khác (ví dụ: bản dựng Python 2.7 từ python.org). Gỡ cài đặt mọi cài đặt Python 2.7 khác trước khi cài đặt ActivePython 2.7.

    • Sage khuyên bạn nên cài đặt nó vào một máy ảo và cung cấp tệp hình ảnh Oracle VirtualBox có thể được sử dụng cho mục đích này. Nâng cấp được xử lý nội bộ bằng cách ban hành sage -upgradelệnh.
    • Anaconda có thể được cập nhật bằng cách sử dụng condalệnh :

      conda update --all

      Anaconda / Miniconda cho phép người dùng tạo môi trường để quản lý nhiều phiên bản Python bao gồm Python-2.6, 2.7, 3.3, 3.4 và 3.5. Các bản cài đặt Anaconda / Miniconda gốc hiện đang dựa trên Python-2.7 hoặc Python-3.5.

      Anaconda có thể sẽ phá vỡ mọi cài đặt Python khác. Cài đặt sử dụng trình cài đặt MSI. [ CẬP NHẬT : 2016-05-16] Anaconda và Miniconda hiện sử dụng trình .execài đặt và cung cấp các tùy chọn để vô hiệu hóa các PATHthay đổi của Windows và Registry.

      Do đó, Anaconda / Miniconda có thể được cài đặt mà không làm gián đoạn cài đặt Python hiện có tùy thuộc vào cách cài đặt và các tùy chọn đã được chọn trong khi cài đặt. Nếu trình .execài đặt được sử dụng và các tùy chọn thay đổi Windows PATHvà Registry không bị tắt, thì mọi cài đặt Python trước đó sẽ bị tắt , nhưng chỉ cần gỡ cài đặt cài đặt Anaconda / Miniconda sẽ khôi phục cài đặt Python gốc, ngoại trừ các Python\PythonCorephím Windows Registry .

      Anaconda / Miniconda làm các chỉnh sửa registry sau đây không phụ thuộc vào tùy chọn cài đặt: HKCU\Software\Python\ContinuumAnalytics\với các phím sau: Help, InstallPath, ModulesPythonPath- quan chức Python đăng ký các phím này quá, nhưng dưới Python\PythonCore. Ngoài ra thông tin gỡ cài đặt được đăng ký cho Anaconda \ Miniconda. Trừ khi bạn chọn tùy chọn "Đăng ký với Windows" trong khi cài đặt, nó sẽ không tạo PythonCore, vì vậy các tích hợp như Python Tools cho Visual Studio không tự động nhìn thấy Anaconda / Miniconda. Nếu tùy chọn đăng ký Anaconda / Miniconda được bật, thì tôi nghĩ rằng các khóa Windows Windows Registry hiện tại của bạn sẽ bị thay đổi và việc gỡ cài đặt có thể sẽ không khôi phục chúng.

    • Các bản cập nhật WinPython , tôi nghĩ, có thể được xử lý thông qua Bảng điều khiển WinPython .
    • PortablePythonkhông còn được phát triển . Nó không có phương pháp cập nhật. Có thể cập nhật có thể được giải nén vào một thư mục mới và sau đó App\lib\site-packagesApp\Scriptscó thể được sao chép vào cài đặt mới, nhưng nếu điều này không làm việc sau đó cài đặt lại tất cả các gói có thể được cần thiết. Sử dụng pip listđể xem những gói đã được cài đặt và phiên bản của chúng. Một số đã được cài đặt bởi PortablePython. Sử dụng easy_install pipđể cài đặt pip nếu nó chưa được cài đặt.
  2. Nếu OP có 2.7.x và muốn cài đặt một phiên bản khác, vd <= 2.6.x hoặc> = 3.xx, thì việc cài đặt các phiên bản khác nhau cạnh nhau là ổn. Bạn phải chọn phiên bản Python (nếu có) để liên kết với *.pycác tệp và bạn muốn trên đường dẫn của mình, mặc dù bạn sẽ có thể thiết lập hệ vỏ với các đường dẫn khác nhau nếu bạn sử dụng BASH . AFAIK 2.7.x tương thích ngược với 2.6.x, do đó không cần cài đặt song song IMHO, tuy nhiên Python-3.xx không tương thích ngược, vì vậy tôi khuyên bạn nên đưa Python-2.7 vào đường dẫn của bạn và có Python-3 là một phiên bản tùy chọn bằng cách tạo một lối tắt đến tệp thực thi của nó được gọi là python3 (đây là một thiết lập phổ biến trên Linux). Đường dẫn cài đặt mặc định Python chính thức trên Windows là

    • C: \ Python33 cho 3.3.x (mới nhất 2013-07-29)
    • C: \ Python32 cho 3.2.x
    • & c.
    • C: \ Python27 cho 2.7.x (mới nhất 2013-07-29)
    • C: \ Python26 cho 2.6.x
    • & c.
  3. Nếu OP không cập nhật Python mà chỉ cập nhật các gói, họ có thể muốn xem xét virtualenv để tách các phiên bản khác nhau của các gói dành riêng cho các dự án phát triển của họ. Pip cũng là một công cụ tuyệt vời để cập nhật các gói. Nếu các gói sử dụng trình cài đặt nhị phân, tôi thường gỡ cài đặt gói cũ trước khi cài đặt gói mới.

Tôi hy vọng điều này sẽ làm sáng tỏ bất kỳ sự nhầm lẫn.


1
Này Mark, tôi có một câu hỏi cho người mới. Bạn có tin rằng việc nâng cấp từ 2.7.x lên 3.3.x thực sự quan trọng không? Tôi đang bắt đầu sử dụng python và đã cài đặt phiên bản cũ, nhưng kể từ khi bắt đầu, tôi muốn tìm hiểu phiên bản mới nhất (trừ khi chỉ có những khác biệt rất nhỏ). Cuộc gọi của bạn về điều này là gì? Cảm ơn bạn đã giúp đỡ.
Matteo

7
Tôi sẽ sử dụng cả hai. Nếu bạn đang ở trên MS Windows, bạn sẽ nhận được trong thư mục gốc của bạn C:\Python27C:\Python33, nếu bạn đang ở trên máy Mac, bạn sẽ thấy /Library/Frameworks/Python/Versions/2.7.x/Library/Frameworks/Python/Versions/3.3.xvà nếu bạn đang ở trên Linux có thể bạn đã có cả hai cài đặt. Truyền thống là sử dụng Python-2.7 và liên kết nhị phân cho Python-3.3 tới python33. Đồng thời xem Python2orPython3Python 2 vs Python 3 . Cá nhân tôi quá lười để chuyển sang 3.3.
Đánh dấu Mikofski

2
Cảm ơn các câu trả lời chi tiết! Với 2.7, cài đặt cũ không hoạt động khi một là 32 bit và một là 64 bit. Tôi kết thúc với hai mục trong "Chương trình và Tính năng", cả hai đều trỏ đến C: \ Python27. Bạn có sẵn lòng thêm vào câu trả lời của mình rằng mọi người chỉ nên ghi đè lên 32 với 32 và 64 bằng 64? Cảm ơn!
cxw

1
@cxw cảm ơn đã phản hồi. Nếu bạn muốn có cả 32 và 64 cùng nhau, có nhiều cách. Có lẽ cách dễ nhất là sử dụng cài đặt "admin" của phiên bản 32 bit vào C:\Python27_x86dòng lệnh : msiexec /a "python-2.7.11.msi" TARGETDIR="C:\Python27_x86" /qn /l*v python27_x86_install.log. Một tùy chọn khác là xây dựng từ nguồn hoặc thử Bootstrap Python .
Đánh dấu Mikofski

1
Trình cài đặt MSI nói rằng nó sẽ thay thế thư mục 2.7, tuy nhiên, nếu bạn lưu trữ các đoạn mã khác trong thư mục gốc 2.7 thì nó sẽ không xóa chúng;)
XXN

6

Giải pháp tốt nhất là cài đặt các phiên bản Python khác nhau trong nhiều đường dẫn.

ví dụ. C: \ Python27 cho 2.7 và C: \ Python33 cho 3.3.

Đọc phần này để biết thêm: Cách chạy nhiều phiên bản Python trên Windows


Đây là cách tôi làm điều đó. Tôi chạy cả hai phiên bản 32 và 64 bit của python 2.7.xx và 3.5.xx và IronPython 2.7.xx. Tôi sử dụng Eclipse để phát triển và chọn đường dẫn python khi gỡ lỗi. Khi chạy tập lệnh, tôi chỉ cần đặt đường dẫn đến phiên bản trình thông dịch mà tôi muốn sử dụng. Cập nhật 3.5.0 lên 3.5.3 cung cấp tùy chọn cập nhật đơn giản, cài đặt mới.
Bill Kidd

5
  • Trình cài đặt Python .msi chính thức được thiết kế để thay thế:

    • bất kỳ bản phát hành vi mô nào trước đây (trong xyz , z là "micro") vì chúng được đảm bảo tương thích ngược và tương thích nhị phân
    • cài đặt "ảnh chụp nhanh" (được xây dựng từ nguồn) với bất kỳ phiên bản vi mô nào
  • Trình cài đặt ảnh chụp nhanh được thiết kế để thay thế bất kỳ ảnh chụp nhanh nào bằng phiên bản vi mô thấp hơn.

(Xem mã chịu trách nhiệm cho 2.x , cho 3.x )

Bất kỳ phiên bản nào khác không nhất thiết phải tương thích và do đó được cài đặt cùng với phiên bản hiện có. Nếu bạn muốn gỡ cài đặt phiên bản cũ, bạn sẽ cần phải làm điều đó bằng tay. Và cũng gỡ cài đặt bất kỳ mô-đun của bên thứ 3 nào bạn có cho nó:

  • Nếu bạn đã cài đặt bất kỳ mô-đun nào từ bdist_wininstcác gói (Windows.exe ), hãy gỡ cài đặt chúng trước khi gỡ cài đặt phiên bản hoặc trình gỡ cài đặt có thể không hoạt động chính xác nếu nó có logic tùy chỉnh
  • các mô-đun được cài đặt có setuptools/ pipcư trú trong đó Lib\site-packageschỉ có thể bị xóa sau đó
  • các gói bạn đã cài đặt cho mỗi người dùng, nếu có, cư trú %APPDATA%/Python/PythonXY/site-packagesvà có thể bị xóa

1

Tôi luôn luôn cài đặt phiên bản mới trên đầu và không bao giờ có bất kỳ vấn đề. Hãy chắc chắn rằng đường dẫn của bạn được cập nhật để trỏ đến phiên bản mới.


1
Khi bạn cài đặt trên đầu trang, nó có giữ lại các mô-đun bên ngoài như pygame, bs4, lxml, v.v. mà tôi đã tải xuống khô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.