Ứng dụng Python của tôi được xây dựng sao cho một số chức năng có sẵn dưới dạng bổ trợ. Kiến trúc plugin hiện tại rất đơn giản: Tôi có một thư mục/gói bổ sung chứa một số mô đun python. Tôi tải plugin liên quan như sau:Tải động các plugin trăn chưa được biên dịch trong mã biên dịch py2exe
plugin_name = blablabla
try:
module = __import__(plugin_name, fromlist='do_something')
except ImportError:
#some error handling ...
và sau đó thực hiện:
try:
loans = module.do_something(id_t, pin_t)
except xxx:
# error handling
tôi biên dịch các ứng dụng để Windows nhị phân sử dụng py2exe. Điều này làm việc tốt, ngoại trừ thực tế là tất cả các plugin (và phải) được bao gồm trong nhị phân. Điều này không thực tế lắm, vì đối với mỗi plugin mới, tôi phải biên dịch lại và phát hành phiên bản mới của ứng dụng. Sẽ tốt hơn nếu một plugin mới (tức là tệp python) có thể được sao chép vào một số thư mục plugin ứng dụng và mã Python trong mã tệp được diễn giải trực tiếp bởi ứng dụng của tôi.
Cách tiếp cận tốt nhất để làm như vậy là gì?
(Tôi đã mặc dù đọc từng dòng của file plugin chọn, và áp dụng một exec
statement với nó. Nhưng có thể có những cách tốt hơn ...)
Cảm ơn câu trả lời. Nhưng điều này không đòi hỏi ai đó phải cài đặt python trên máy tính của anh ta? (giải pháp tôi đề xuất, sẽ yêu cầu điều đó, bây giờ tôi nghĩ về nó) – Rabarberski
Bạn nói đúng, nó phải là cùng một cài đặt python cho cả ứng dụng của bạn và các plugin bên ngoài. Tôi đồng ý điều này khá khó chịu. –