Sử dụng gói Python 2 trong Python 3
Bạn đang bắt đầu làm việc trên một dự án mới và một trong những phần phụ thuộc của bạn vẫn không hỗ trợ Python 3 — argh Show Dưới đây là hướng dẫn nhanh về cách giải quyết vấn đề đó, từng bước một Gói ví dụ của chúng tôi là thư viện máy khách cho Qualys (một sản phẩm bảo mật) Trước khi bạn rẽ nhánh dự án, hãy kiểm tra xem có ai khác đã gặp sự cố này trước đây không, có sự cố nào trong GitHub không? Bước 1. nĩa nóKhi bạn bắt đầu, bạn sẽ cần rẽ nhánh dự án ban đầu. Thông thường, ở cuối chi tiết gói trên PyPi, bạn có thể thấy các phiên bản Python được hỗ trợ. Mọi người thường bỏ qua thông tin này đối với các gói chỉ dành cho Python 2 Chuyển đến dự án GitHub và tạo ngã ba của bạn, tải xuống và sao chép gói. Tạo một nhánh ngay trước khi bạn bắt đầu thay đổi Điều đầu tiên bạn thường gặp phải trước khi bắt đầu lo lắng về việc nhập chỉ là các câu lệnh in đơn giản. Câu lệnh in không có dấu ngoặc đơn là rào cản Python 3 “không thân thiện” phổ biến nhất mà tôi gặp phải. Chúng tôi sẽ sử dụng gói Python-Modernize trong Bước 3, nhưng điều này sẽ không bắt được các tệp README, tài liệu và ví dụ về mã
Ok, chúng tôi có 18 lần xuất hiện trong gói của mình, bao gồm một số lần trong. /. git/ (mà chúng tôi bỏ qua. Đi vào trình chỉnh sửa yêu thích của bạn và sửa tất cả những thứ đó Sau đó kiểm tra lô đó trong một cam kết duy nhất Cách “tốt nhất” để kiểm tra khả năng tương thích của Python 2 và 3 là thông qua kiểm tra hoàn chỉnh và dịch vụ CI như Circle, Snap hoặc Travis Nhưng đoán xem. Gói của bạn không có bất kỳ bài kiểm tra nào. D'oh. Bạn có 2 lựa chọn — 1) viết bài kiểm tra, trở thành một công dân tốt 2) thực hiện một số phân tích tĩnh Phân tích tĩnhCài đặt python Hiện đại hóa với
Thêm bài kiểm traThử nghiệm cơ bản nhất là tôi có thể nhập mô-đun/gói/mô-đun con không? . Nhìn vào dự án Tox để chạy thử nghiệm trên nhiều môi trường Kiểm tra thứ hai bạn muốn xem là liệu dự án này có thực hiện bất kỳ xử lý chuỗi nào không. Có nhiều hơn những gì tôi có thể trình bày chi tiết trong bài đăng trên blog này về các chuỗi Python 3, nhưng hãy xem sáu dự án giải quyết vấn đề “nó có phải là một chuỗi không” và cả việc sử dụng các phương thức chuyển đổi byte và unicode Thứ ba là sẽ yêu cầu một số kinh nghiệm với gói. Bạn không thể viết bài kiểm tra đơn vị từ cơ sở mã hiện có khi bạn không biết liệu nó có hoạt động hay không. Tập trung vào thử nghiệm tích hợp và làm việc lạc hậu. Hãy thử viết một tập lệnh đơn giản sử dụng gói như dự định. Sau đó, xây dựng một số thử nghiệm xung quanh các tình huống đó Bước 4. Cập nhật thiết lập. pyKiểm tra thiết lập. py để xem cần thực hiện những thay đổi nào để nói với cả thế giới rằng gói này hỗ trợ Python 3 Ok, một số thú cưng của tôi xuất hiện ở đây
Xem trường install_requires ở phía dưới? Bước 5. Cài đặt nó vào dự án ban đầu của bạnOk, bây giờ quay lại từ đầu- chúng tôi đang làm việc trên một dự án và gặp khó khăn với gói này? . Trước tiên hãy đảm bảo rằng bạn đẩy các thay đổi của mình lên github (git push origin python3). Pip cho phép bạn không chỉ cài đặt trực tiếp từ PyPi mà còn từ kho lưu trữ Git. Bạn cũng có thể chỉ định nhánh sau URL bằng biểu tượng @. Egg= được sử dụng để nói với Pip tên gói
Đây là nơi bạn có thể tiếp tục chạy thử nghiệm tích hợp vững chắc với phiên bản mới Bước 6. Tăng yêu cầu kéoBây giờ, quay lại GitHub, bạn sẽ muốn chia sẻ công việc của mình với tác giả và cộng đồng Python rộng lớn hơn
Đây là ví dụ của tôi https. //github. com/paragbaxi/qualysapi/pull/21 Đợi nó được hợp nhất và sau đó hy vọng bạn sẽ thấy bản cập nhật trên PyPi Bước 7. 3 tháng sau?Vì vậy, tác giả gói đã không hợp nhất mã của bạn. Không sao, nó xảy ra. Thường là do mọi người soạn thảo các gói như một phần công việc của họ và thay đổi công việc. Quay lại thiết lập. py và đặt tên mới cho gói (không thay đổi trường Python 3 có thể sử dụng thư viện Python 2 không?Python phiên bản 3 không tương thích ngược với Python 2 . Nhiều nhà phát triển gần đây đang tạo các thư viện mà bạn chỉ có thể sử dụng với Python 3. Nhiều thư viện cũ hơn được tạo cho Python 2 không tương thích với chuyển tiếp.
Làm cách nào để sử dụng Python 2 đến 3?Chuyển đổi giữa môi trường Python 2 và Python 3 . Tạo môi trường Python 2 có tên py2, cài đặt Python 2. 7. . Tạo một môi trường mới có tên py3, cài đặt Python 3. 5. . Kích hoạt và sử dụng môi trường Python 2. . Vô hiệu hóa môi trường Python 2. . Kích hoạt và sử dụng môi trường Python 3 Bạn có thể trộn Python 2 và 3 không?Không "trộn lẫn" . Khi các gói và mô-đun khác nhau có sẵn trong Python 3, hãy sử dụng chuyển đổi 2to3 để tạo Python 3. Bạn sẽ tìm thấy một số vấn đề nhỏ. Sửa Python 2 của bạn để gói của bạn hoạt động trong Python 2 và cũng hoạt động sau khi chuyển đổi.
Là Python 2. 0 và 3. 0 chương trình tương thích với nhau?Python 2 lưu trữ các chuỗi theo ASCII; . Python 2 có cú pháp phức tạp hơn Python 3. Nhiều thư viện Python 2 không tương thích về phía trước; . Python đã ngừng hỗ trợ Python 2 vào tháng 1 năm 2020; |