Tôi muốn viết một ứng dụng C++ với Qt, nhưng xây dựng một mẫu thử nghiệm đầu tiên bằng Python và sau đó thay thế dần mã Python bằng C++. Đây có phải là cách tiếp cận đúng?
Điều đó tùy thuộc vào mục tiêu của bạn. Sau khi thực hiện cả hai, tôi khuyên bạn nên ở lại với Python bất cứ nơi nào có thể và hợp lý. Mặc dù phải mất một chút kỷ luật, nhưng rất có thể viết các ứng dụng cực lớn trong Python. Nhưng, khi bạn tìm thấy các điểm nóng và những thứ có thể được xử lý tốt hơn trong C++, bạn chắc chắn có thể chuyển các phần liên quan đến C++.
Có tài liệu toàn diện nào về quy trình này hay tôi phải học mọi thành phần, và nếu có, cái nào?
Đây là những gì tôi muốn giới thiệu cho các mảnh khác nhau:
EDITOR/IDE: Sử dụng bất kỳ trình soạn/IDE bạn cảm thấy thoải mái với, nhưng tôi rất muốn khuyên một hỗ trợ sắp xếp. Nếu bạn thấy thoải mái với Eclipse, hãy sử dụng nó. Nếu bạn muốn chủ yếu đi trên tuyến đường C++ và bạn không quá quen thuộc với bất kỳ trình chỉnh sửa nào, bạn có thể nên sử dụng QtCreator tốt hơn. Eric là một IDE Python cực kỳ tốt với sự hỗ trợ cho việc tái cấu trúc, trừ khi bạn định làm rất nhiều C++, hãy xem nó. Thậm chí tốt hơn, mã nguồn của nó là một ví dụ về cách sử dụng và thực hành PyQt tốt.
TRÌNH:
Bản tóm tắt nhanh chóng:
- Viết ứng dụng của bạn bằng Python sử dụng PyQt
- Khi xác định là điểm nóng, chuyển đổi lớp học Python tách riêng để
C++
- Tạo các ràng buộc đối với những các lớp học sử dụng SIP
- Nhập libr mới được xác định aries bằng Python ở vị trí của các đối tác của họ Python
- Thưởng thức tăng tốc độ
chi tiết chung:
Viết ứng dụng bằng Python sử dụng PyQt. Hãy cẩn thận để giữ một số separation of concerns tốt để khi bạn cần chuyển các phần sang C++, chúng sẽ tách biệt với các phụ thuộc của chúng. Khi bạn cuối cùng cần phải chuyển một cái gì đó để C + +, viết nó trong C + +/Qt và sau đó tạo ra bindings cho nó bằng cách sử dụng SIP. SIP có good reference manual trong quá trình này và bạn có tất cả PyQt làm ví dụ.
TRIỂN KHAI:
C++ - Đối với nhiều ứng dụng phụ thuộc là đủ đơn giản rằng nó không quá khó khăn để tạo ra một trình cài đặt sử dụng một công cụ như NullSoft's Installer hoặc InnoSetup.
Python/PyQt - Ứng dụng PyQt khó cài đặt hơn một chút do phụ thuộc vào Python và sự phụ thuộc vào sự hiện diện của thư viện Qt. Một người ghi lại những nỗ lực của mình trên this post at ARSTechnica. py2exe hoạt động khá tốt trên Windows và hoạt động tốt. IME, freeze.py, đi kèm với nguồn Python, đôi khi gặp sự cố khi xác định thư viện được chia sẻ nào thực sự cần thiết và đôi khi sẽ kết thúc việc tạo nhị phân có phụ thuộc không có. Py2app can be made to work on Mac OS X.
Nhưng tệ hơn, tuy nhiên, là giấy phép PyQt/Qt. Nếu bạn đang phát triển một ứng dụng thương mại, bạn cần có giấy phép PyQt (và Qt) thương mại và đảm bảo ngăn người dùng dễ dàng sửa đổi nguồn hoặc viết mã chống lại PyQt/Qt API because of licensing restrictions. Do đó, tác giả PyQt đã tạo ra một công cụ có tên là VendorId (mặc dù nó có một giấy phép Python). Bên trong VendorId là một công cụ có tên là SIB có thể được sử dụng để tạo ra một tệp thực thi chỉ phụ thuộc vào trình thông dịch Python. Tuy nhiên, nếu bạn định đi xa, bạn có thể muốn cài đặt một Python tùy chỉnh cùng với ứng dụng của bạn.
TUYÊN BỐ TỪ CHỐI: Tôi chưa từng sử dụng PySide chút nào, vì vậy tôi không chắc chắn về cách so sánh với PyQt. Ngoài ra, hãy lưu ý cảnh báo sau trên trang web của họ:
PySide là một công việc đang tiến hành và chưa phù hợp để phát triển ứng dụng đòi hỏi sự ổn định ở mức sản xuất.
Nhưng, trên một lưu ý tốt, họ có ý định, ít nhất là cho bản phát hành ban đầu để "duy trì khả năng tương thích API với PyQt". Vì vậy, ngoài các ràng buộc C++, bạn có thể dễ dàng chuyển đổi giữa hai phần sau.
Câu trả lời hay! Bạn có thể xem xét một phần trên py2exe/freeze.py để đáp ứng với chỉnh sửa của OP, mặc dù họ không đặt câu hỏi một cách rõ ràng. – tgray
@tgray - cảm ơn những người đứng đầu về chỉnh sửa. Tôi đã thêm một phần Triển khai. –
có thể cập nhật 'Pyside không phù hợp với phần sản xuất cấp vì nó đã được một thời gian. – vikki