2009-12-23 28 views
7

Tôi khá chắc chắn rằng các tập lệnh python sẽ hoạt động trong cả ba, nhưng tôi muốn đảm bảo. Tôi đã đọc ở đây và ở đó về các biên tập viên có thể viết CPython, Jython, IronPython và tôi hy vọng rằng tôi đang tìm kiếm nhiều vào sự khác biệt.Các tập lệnh CPython, IronPython, Jython có tương thích với nhau không?

Tình huống của tôi là tôi có 3 api khác nhau mà tôi muốn thử nghiệm. Mỗi api thực hiện cùng một mã chức năng khôn ngoan, nhưng chúng khác nhau trong việc triển khai thực hiện. Tôi đang viết trình bao bọc xung quanh mỗi ngôn ngữ của apis. Mỗi trình bao bọc phải hiển thị cùng một chức năng và triển khai chính xác cho python bằng cách sử dụng Boost :: python, Jython và IronPython.

Câu hỏi của tôi là, một tập lệnh python được viết bằng cách sử dụng các phương pháp tiếp xúc này (phổ biến cho mỗi ngôn ngữ) có hoạt động trong cả ba "hương vị" của Python không?

Giống như tôi đã nói tôi khá chắc chắn câu trả lời là 'Tất nhiên', nhưng tôi cần phải chắc chắn trước khi tôi dành quá nhiều thời gian làm việc về điều này.

Trả lời

10

Câu trả lời ngắn gọn là: Đôi khi.

Một số dự án được xây dựng trên IronPython có thể không hoạt động với CPython và một số mô-đun CPython được viết bằng C (ví dụ: NumPy) sẽ không hoạt động với IronPython. Trên một lưu ý tương tự, trong khi Jython thực hiện đặc tả ngôn ngữ, nó có một số không tương thích với CPython (ví dụ, nó thiếu một vài phần của thư viện chuẩn CPython, và nó có thể nhập các gói và lớp thư viện chuẩn Java như Swing).)

Vì vậy, có, miễn là bạn tránh được sự không tương thích.

+0

Ok, tôi đã đọc một số bài viết về việc phát hiện thư viện nào bạn đang sử dụng trong python, miễn là không tương thích được giữ ở mức tối thiểu này sẽ hoạt động khá độc đáo. thanks – Charles

+2

@Charles: Ngoài ra, mỗi người trong số các trình thông dịch Python khác (Jython, IronPython) sẽ có tài liệu chi tiết tốt đẹp, nơi nó không phù hợp với CPython. Nếu bạn theo dõi các tài liệu đó, bạn sẽ có thể nói nhanh ngay khi quá khứ mở rộng của bạn hoạt động trên cả ba tài liệu. –

+0

khác biệt giữa ipython và cpython: http://en.wikipedia.org/wiki/IronPython#Differences_with_CPython có vẻ khá nhỏ. – zinking

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