2010-08-09 26 views
7

Tôi đã tạo một mô-đun bằng Python cung cấp khoảng một tá chức năng. Trong khi nó sẽ được sử dụng chủ yếu từ bên trong Python, có một phần nhỏ người dùng cũ sẽ gọi nó từ Perl.Gọi một mô-đun Python từ Perl

Cách tốt nhất để thực hiện việc cắm vào mô-đun này là gì? Suy nghĩ của tôi là:

  1. Cung cấp các chức năng như tiện ích dòng lệnh và thực hiện các cuộc gọi system
  2. Tạo một số loại máy chủ và xử lý các cuộc gọi RPC (nói, thông qua JSON RPC)

Bất kỳ lời khuyên?

Trả lời

19

Một lựa chọn khác là trực tiếp Python trực tiếp trong tập lệnh Perl của bạn, sử dụng Inline::Python.

Điều này có thể đơn giản hơn các giải pháp khác và chỉ yêu cầu một mô-đun bổ sung.

+0

Inline :: Python hoạt động khá tốt, có thể có một số điểm kỳ lạ khi đi qua một số loại biến nhất định. – GWW

+0

Cảm ơn bạn. Tôi thích tất cả các câu trả lời, nhưng điều này có vẻ rất di động. – Escualo

3

Cung cấp các chức năng như tiện ích dòng lệnh và làm cho hệ thống gọi

trình thực sự độc đáo. Đây là cách các chương trình như Python (và Perl) được sử dụng để sử dụng.

+0

Khó để đánh bại đơn giản và được thử nghiệm tốt, phải không? – dawg

+5

Ngoại trừ khóa học nếu chúng cần chạy trong môi trường mà chi phí khởi động của trình thông dịch Python (số lần thực hiện dự kiến) là quá cao. Giống như một ứng dụng hoặc máy chủ web, làm ví dụ. Cách Perl được sử dụng theo cách thích hợp. – DVK

+1

@DVK: Python cũng có thể được sử dụng theo nhiều cách khác nhau, mỗi cách phù hợp với các tình huống khác nhau. Bạn có biết tình huống nào áp dụng cho câu hỏi này không? –

9

Trong ngắn hạn, giải pháp đơn giản nhất là sử dụng Inline :: Python. Theo dõi chặt chẽ bằng cách gọi một kịch bản dòng lệnh.

Về lâu dài, sử dụng máy chủ để cung cấp chức năng RPC hoặc chỉ cần gọi một tập lệnh dòng lệnh sẽ cung cấp cho bạn giải pháp chứng minh tương lai nhất.

Tại sao?

Bằng cách đó bạn không bị ràng buộc với Perl hoặc Python làm ngôn ngữ được sử dụng để xây dựng hệ thống sử dụng các dịch vụ do thư viện của bạn cung cấp. Hoặc là phương pháp tạo ra một giao diện độc lập, rõ ràng về ngôn ngữ mà bạn có thể sử dụng với bất kỳ môi trường phát triển nào mà bạn áp dụng.

Tùy thuộc vào nhu cầu của bạn, bất kỳ tùy chọn nào được trình bày có thể là "lựa chọn tốt nhất". Tùy thuộc vào nhu cầu của bạn phát triển theo thời gian như thế nào, một lựa chọn khác có thể được tiết lộ là "tốt nhất".

Cách tiếp cận của tôi đối với vấn đề này là hỏi một vài câu hỏi:

Bạn có thường xuyên thay đổi công cụ phát triển hay không. Bạn đã chuyển sang Python từ Perl. Bạn đã bắt đầu với Tcl và đi đến Perl? Bạn sẽ chuyển sang ngôn ngữ X mới thú vị trong 1, 5 hoặc 10 năm? Nếu bạn thay đổi công cụ 'thường xuyên' (bất cứ điều gì có nghĩa là) nhấn mạnh khả năng tương thích công cụ chéo.

Tốc độ đủ nhanh đến mức nào? Là thời gian khởi động cho các giải pháp dòng lệnh ok? Có Inline :: Python làm chậm quá nhiều thứ (bạn vẫn đang khởi tạo một trình thông dịch Python, nó chỉ được nhúng trong trình thông dịch Perl của bạn)?

Dựa trên câu trả lời cho những câu hỏi này, tôi sẽ làm điều đơn giản nhất có khả năng hoạt động.

tôi đoán là có nghĩa là theo thứ tự:

  1. Inline :: Python
  2. dòng lệnh script
  3. Xây dựng một máy chủ RPC
Các vấn đề liên quan