2009-05-06 26 views
7

Hoặc tôi có nên gắn bó với Python2.5 lâu hơn một chút không?Python2.6 có đủ ổn định để sử dụng sản xuất không?

+2

Xác định "đủ ổn định", xin vui lòng. Những gì "bất ổn" là bạn lo lắng về? Ngưỡng của bạn cho "đủ" là bao nhiêu? –

+0

Tôi đang sử dụng nó trong sản xuất tại một ngân hàng đầu tư để lưu trữ một giá treo dựa trên hệ thống báo giá. – Ravi

Trả lời

18

Từ python.org:

The current production versions are Python 2.6.2 and Python 3.0.1.

Vì vậy, vâng.

Python 3.x chứa một số thay đổi ngược không phù hợp, vì vậy python.org cũng nói:

start with Python 2.6 since more existing third party software is compatible with Python 2 than Python 3 right now

+3

+1: Trích dẫn tài liệu. Một liên kết thậm chí còn tốt hơn. –

+1

@ S.Lott Đã thay đổi! –

10

Ubuntu đã chuyển sang 2,6 trong đó là phiên bản mới nhất, và đã không có vấn đề gì đáng kể. Vì vậy, tôi sẽ nói "có, nó ổn định".

6

Tùy thuộc vào thư viện bạn sử dụng. Ví dụ, không có gói InformixDB biên dịch sẵn cho 2.6 nếu bạn phải sử dụng Python trên Windows.

Ngoài ra thanh khung web2py với 2,5 do một số lỗi trong 2.6.

Cá nhân tôi sử dụng CPython 2.6 (workhorse) và 3.0 (thử nghiệm) và Jython 2.5 beta (cho thử nghiệm của tôi với JDBC và ODBC).

4

Có, nhưng đây không phải là câu hỏi đúng. Câu hỏi đúng là "tôi có thể sử dụng Python 2.6, xem xét sự không tương thích mà nó giới thiệu không?". Và người trả lời ngắn gọn là "có thể nhất là có, trừ khi bạn sử dụng một lib cụ thể không hoạt động với 2.6, điều này khá hiếm".

+1

điều gì không tương thích? – SilentGhost

+0

E.G: os.popen2 và os.popen3 implementationq trong python 2.6xác định đối số cmd là một chuỗi. Tài liệu - trợ giúp (os.popen3) - nói rằng đối số cmd có thể là một chuỗi trên Unix. Có cho nó không tương thích với os.popen * trong python 2.5 –

+0

Tôi nghĩ rằng bạn hiểu sai tài liệu. http://www.python.org/doc/2.5.4/lib/os-newstreams.html#l2h-2628 nói: "Ngoài ra, đối với mỗi biến thể này, trên Unix, cmd có thể là một chuỗi, trong trường hợp này các đối số sẽ được chuyển trực tiếp đến chương trình mà không có sự can thiệp của shell (như với os.spawnv()). Nếu cmd là một chuỗi, nó sẽ được chuyển tới shell (như với os.system()). " – SilentGhost

1

tôi đã tìm thấy 2,6 là khá tốt với hai ngoại lệ:

  1. Nếu bạn đang sử dụng nó trên một máy chủ, tôi đã gặp khó khăn trong quá khứ với một số thư viện được sử dụng bởi các yếu tố của máy chủ (Debian Etch IIRC). Nó có thể với một chút pokemon jiggery để duy trì một số phiên bản của python trong unison mặc dù nếu bạn cẩn thận :-)
  2. Điều này không còn đúng nữa, nhưng lần cuối cùng tôi đã thử 2,6, wxPython chưa được cập nhật có nghĩa là tất cả các công cụ gui của tôi tôi đã viết đều bị hỏng. Hiện có một phiên bản có sẵn được xây dựng dựa trên 2.6.

Vì vậy, tôi muốn đề nghị bạn rà soát tất cả các module bạn sử dụng và kiểm tra khả năng tương thích của họ với 2,6 ...

1

Gần đây tôi đã chuyển từ python2.5 đến 2,6 cho dự án nghiên cứu của tôi liên quan đến rất nhiều libs bên thứ 3 (scipy, pydot, vv) và các công cụ liên quan đến swig.

Điều duy nhất tôi đã phải thay đổi là để chuyển đổi tất cả các chuỗi với

s = unicode(s, "utf-8")

trước khi tôi ăn chúng vào các module đăng nhập.

Nếu không, tôi có mọi

Traceback (most recent call last):
File "/usr/lib/python2.6/logging/__init__.py", line 773, in emit
stream.write(fs % msg.encode("UTF-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 31: ordinal not in range(128)

+0

Tôi cũng có UnicodeDecodeError đó, bạn có thể cho tôi biết cách chuyển đổi chuỗi bằng "s = unicode (s," utf-8 ")" không? – erical

Các vấn đề liên quan