Tôi có nên thay đổi mã Python nếu nâng cấp Ubuntu không?


11

Tôi có một phần mềm mà tôi đã phát triển trong Python 3 trong nhiều năm. Cho đến hôm nay, tôi đã sử dụng Ubuntu Desktop 11.04 nhưng bây giờ tôi muốn chuyển sang phiên bản Ubuntu cao hơn.

Tôi có phải ở lại Ubuntu 11.04 để tôi không phải thay đổi một phần mã nguồn của phần mềm do những thay đổi mới trong các phiên bản cao hơn của Ubuntu không?

Phiên bản Ubuntu gần đây có ảnh hưởng đến phần mềm của tôi không?


18
Điều này thực sự là không có trí tuệ đối với tôi: cập nhật lên 14.04, nếu có bất cứ điều gì bị hỏng trong phần mềm của bạn: hãy sửa nó. Đây là một bài tập tuyệt vời để tránh thối phần mềm. Loại vấn đề bạn có thể tìm thấy là với sự phụ thuộc. Bạn có thể kiểm tra những điều này trước trong một virtualenv.
don.joey

6
@begueradj Tôi không muốn giảm thiểu nỗ lực mà nó sẽ mất cũng như vô hiệu hóa lý do của bạn. Nó chỉ là: hoặc bạn đặt nỗ lực vào hoặc phần mềm của bạn thực sự sẽ không tồn tại được lâu nữa. Bạn có thể nâng cấp lên 12.04, nhưng ở lại phiên bản EOL có vấn đề. Và vấn đề sẽ không tự biến mất ...
don.joey

5
@begueradj - vui lòng chỉnh sửa câu hỏi của bạn và cung cấp một số chi tiết về phần mềm của bạn. Mô tả những gì nó làm. Mô tả những gì bộ công cụ bạn đang sử dụng (ví dụ GTK? QT?). Mô tả phần mềm bên thứ ba mà nó phụ thuộc vào (ví dụ: phiên bản cụ thể của firefox? Webkit?). Mô tả các phụ thuộc phần mềm để xây dựng phần mềm của bạn. Nếu không có thông tin ở trên, bạn sẽ không nhận được câu trả lời cụ thể cho câu hỏi của mình. Bạn sẽ chỉ nhận được một câu trả lời chung chung như bạn hiện có.
fossfreedom

3
11.04 đã kết thúc cuộc đời một năm rưỡi trước .. bạn nên nâng cấp từ lâu.
psusi

Câu trả lời:


3

Dựa trên ý kiến ​​của bạn, bạn đã thử nghiệm thành công phần mềm của mình trên máy ảo, đây là một tin tốt.

Nhưng là một nhà phát triển ứng dụng, bạn phải sẵn sàng điều chỉnh mã của mình với các bản phát hành mới hơn nếu không nó sẽ nhanh chóng bị từ bỏ.

Bây giờ để đảm bảo rằng nó sẽ tiếp tục hoạt động với các bản phát hành mới của Ubuntu, tôi khuyến khích bạn duy trì nó dưới dạng gói và cung cấp một bộ kiểm tra hoàn chỉnh cho ứng dụng của bạn và gọi nó trong quá trình xây dựng gói (ví dụ: bằng cách gọi setup.py testtrong debian/rules override_dh_auto_testphần của bạn ).

Bạn có thể dễ dàng thiết lập các bản dựng hàng ngày của gói trong ppa bằng công thức bzr-builder . Bằng cách đó, bạn sẽ được thông báo về tất cả các lỗi xây dựng gây ra bởi các phiên bản phần mềm mới hoặc các phụ thuộc bị hỏng.

Các bản phát hành mới thường được mở để phát triển một vài ngày sau khi thông báo phát hành chính thức. Nhìn vào trang ppa của chúng tôi , Utopic hiện là một phần của loạt distro chúng tôi đang xây dựng cho:

nhập mô tả hình ảnh ở đây


3
Tại sao bạn có 2 câu trả lời cho cùng một câu hỏi này? Ngoài ra, autopkgtest không hoạt động theo cách đó. Và làm thế nào để điều này thực sự trả lời câu hỏi tốt hơn hoặc chính xác hơn bất kỳ câu hỏi nào khác?
dobey

Tôi đã đăng một câu trả lời thứ hai trong thời gian tiền thưởng. Lần này để tập trung vào cách ngăn chặn các vấn đề cập nhật với hy vọng mang lại những gì OP thực sự mong đợi (vì theo nhận xét của anh ấy, tôi biết rằng ứng dụng của anh ấy hoạt động chính xác với 14.04)
Sylvain Pineau

Tôi khuyên bạn nên hỏi một câu hỏi khác để đặt câu trả lời của bạn ở đó. BTW, tôi sẽ sửa phần autopgktest. @dobey nói đúng, nó không hoạt động theo cách đó.
Braiam

@dobey autopkgtest đã sửa / xóa khỏi câu trả lời của tôi.
Sylvain Pineau

@Braiam autopkgtest đã sửa / xóa khỏi câu trả lời của tôi
Sylvain Pineau

13

Không, bạn không nên ở lại vào ngày 11.04. Đó là End of Life để được hỗ trợ kể từ tháng 10 năm 2012. Nếu bạn muốn có bất kỳ hỗ trợ nào, bạn cần nâng cấp, ít nhất là 12.04 (sẽ được hỗ trợ thêm ba năm nữa).

Ngoài ra, theo các phiên bản mới hơn của Ubuntu cũng bao gồm Python 3.x theo mặc định, với mục tiêu loại bỏ Python 2.x khỏi cài đặt mặc định hoàn toàn.

Bạn có thể gặp vấn đề với việc chạy mã của mình trong phiên bản Python 3.x mới hơn, nhưng nói chung sẽ không có vấn đề gì. Bạn cũng nên, với tư cách là một nhà phát triển, sẵn sàng đối phó với bất kỳ vấn đề nào như vậy, bất kể bạn đang dùng phiên bản Ubuntu nào. Bất kỳ thư viện nào bạn đang sử dụng, hoặc chính Python, đều có thể có lỗi mà mã của bạn phụ thuộc vào hành vi và nếu lỗi đó được khắc phục, có thể khiến chương trình của bạn hoạt động khác với cách bạn mong đợi trước đó.


11

Khó có thể đưa ra một câu trả lời dứt khoát mà không có một mô tả về ứng dụng của bạn. Vì bạn đang sử dụng Python3, ít nhất bạn không bị giới hạn với nhánh Python2.x (sẽ không có Python 2.8).

Bây giờ một vài cảnh báo có thể áp dụng cho ứng dụng của bạn, với Python3, rất nhiều gói hiện không được chấp nhận chỉ vì cách tốt nhất để truy cập GLib / GObject / GIO / GTK + là bằng cách sử dụng Python GObject Introspection (còn gọi là PyGI).

Cuối cùng, vẫn còn một số khác biệt nhỏ giữa các phiên bản python3 khác nhau (ví dụ: Argparse không hoạt động giống hệt với python 3.2 và 3.3.

Một điều bạn có thể thử là khởi động máy ảo 14.04 và kiểm tra mã của bạn với python3.4.


Tôi sẽ không thay đổi phiên bản Python của mình (điều đó là không thể), tôi quan tâm hơn về việc phiên bản Ubuntu mới có thể ảnh hưởng đến mã nguồn phần mềm của tôi như thế nào.

Phiên bản nào bạn chính thức hỗ trợ, 3.2?
Sylvain Pineau

Tôi sử dụng phiên bản 3.1.3

Tôi khuyến khích bạn thử nghiệm ứng dụng của mình với python3.2 (khởi động máy ảo 12.04 và sudo apt-get install python3). Bạn cũng có thể kiểm tra ghi chú phát hành của python3.2 nhưng theo tôi biết python3.2 chỉ là hàng tấn cải tiến so với nhánh 3.1.x (argparse là một trong số đó)
Sylvain Pineau

1
Đối với các chương trình python3, các phiên bản python được nâng cấp chỉ cung cấp những cách hiệu quả hơn để thực hiện các tác vụ phức tạp. Ví dụ, Python3.4 , giới thiệu asyncio và nó sẽ cho phép tôi thoát khỏi các vấn đề chính / luồng glib thực sự phức tạp. Tôi viết một lưu ý về argparse vì tôi đã bị mắc kẹt trong những thay đổi gần đây nhưng nó không phải là vấn đề lớn. Vì vậy, một lần nữa kiểm tra sw của bạn với các phiên bản gần đây (3.2 rồi 3.4 với 14.04) nhưng giống như những người trả lời khác nói rằng bạn không nên gặp phải vấn đề lớn
Sylvain Pineau

2

Nó phụ thuộc vào mã của bạn, Nếu mã của bạn sử dụng các thư viện không được hỗ trợ, bạn không thể di chuyển sang phiên bản mới hơn của hệ điều hành, nhưng hầu hết thời gian sẽ không có vấn đề gì xảy ra.


bạn có thể giải thích cho tôi tại sao một thư viện Python phụ thuộc vào một phiên bản Ubuntu nhất định không?

@begueradj Không, nhưng nếu bạn đang sử dụng thư viện Python không còn được bảo trì, có thể nó đã bị xóa khỏi kho lưu trữ Ubuntu tại một số điểm và do đó không có sẵn trên phiên bản mới hơn. Mã của bạn sau đó sẽ thất bại. Tất nhiên, bạn có thể cài đặt gói thư viện từ phiên bản Ubuntu cũ hơn hoặc từ nguồn, để giải quyết vấn đề, mặc dù bạn sẽ không nhận được bất kỳ bản cập nhật nào cho nó; hoặc bạn có thể sửa mã của mình để sử dụng một thư viện khác hoặc viết mã của riêng bạn để thực hiện các chức năng tương tự.
dobey

như @dobey đã nói, một số thư viện không còn được duy trì nữa hoặc phiên bản mới hơn của nó phá vỡ tính tương thích ngược. Trước đây, tôi có một số vấn đề với Turbogears khi tôi nâng cấp lên phiên bản Ubuntu mới hơn.
Đại dương

0

Ubuntu 14.04 có các gói python3, vì vậy đó không phải là vấn đề. apt-cache search python3sẽ chỉ cho họ thấy Ngoài ra, bạn sẽ phải đọc các ghi chú phát hành cho mỗi bản phát hành Ubuntu trong khoảng từ 11.04 đến "phiên bản cao hơn" và tìm kiếm một thay đổi sẽ phá vỡ ứng dụng của bạn. Không biết gì về sự phát triển của bạn đòi hỏi tôi phải hét YMMV, nhưng tôi đoán là bạn sẽ không gặp vấn đề gì không thể khắc phục.


0

Nếu bạn cần phải chạy một phiên bản cũ của Python trên Ubuntu 14.04 sau đó kích hoạt các deadsnakes kho. Nó có các phiên bản Python 2.3, 2.4, 2.5, 2.6, 3.1, 3.2, 3.3 cho Ubuntu 14.04. Nếu ứng dụng của bạn là mã Python thuần túy và không phụ thuộc vào hành vi của các quy trình khác, thì nó sẽ hoạt động tốt khi chạy theo trình thông dịch cũ.


0

Như một câu trả lời khác, bạn có thể sử dụng môi trường ảo nếu bạn có bất kỳ vấn đề nào hoặc bạn có thể sử dụng cùng một phiên bản python vào ngày 11.04 (tải xuống và xây dựng nó) vào ngày 14.04.


Chắc chắn tôi có thể kiểm tra trên máy ảo (tôi đã làm điều đó), phần mềm của tôi hoạt động tốt ... hiện tại ... nhưng tôi không biết liệu nó có bị lỗi sau vì phiên bản Ubuntu mới không.

1
Vì Ubuntu 14.04 là phiên bản LTS và dựa trên triết lý của họ, họ sẽ không thay đổi phiên bản (đánh bom trên phiên bản chính) và tôi nghĩ bạn không gặp vấn đề gì.
Đại 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.