Tôi có một tập lệnh đơn giản có phụ thuộc vào dnspython để phân tích cú pháp các tệp vùng. Tôi muốn phân phối tập lệnh này dưới dạng một tệp .py mà người dùng có thể chạy miễn là họ đã cài đặt 2.6/2.7. Tôi không muốn người dùng cài đặt phụ thuộc vào toàn bộ trang web vì có thể có xung đột với các gói/phiên bản hiện tại, cũng như tôi không muốn chúng xung quanh với virtualenv. Tôi đã tự hỏi nếu có một cách để nhúng một gói như dnspython bên trong kịch bản (gzip/base64) và có truy cập kịch bản mà gói lúc chạy. Có lẽ giải nén nó vào một thư mục trong/tmp và thêm vào sys.path? Tôi không quan tâm đến chi phí khởi động, tôi chỉ muốn một đơn .py w/tất cả các phụ thuộc được bao gồm mà tôi có thể phân phối.Có cách nào để nhúng các phụ thuộc trong một tập lệnh python không?
Ngoài ra, sẽ không có phụ thuộc C để xây dựng, chỉ các gói python tinh khiết.
Chỉnh sửa: Tập lệnh không phải là .py. Chỉ cần miễn là nó là một tập tin thực thi duy nhất.
Nếu bạn có thể thư giãn một hạn chế tệp, bạn chỉ có thể gói thư viện dnspython cùng với tệp .py của bạn, dưới dạng tệp zip hoặc chỉ như một tệp độc lập thông thường - giải quyết vấn đề phụ thuộc. Bạn có kiên quyết về việc chỉ có 1 tệp không? –
Con đường để cấp phép địa ngục được lát bằng cách nhúng ... –
@MahmoudAbdelkader Tôi cho rằng điều đó sẽ hoạt động. Python sẽ tìm trong thư mục hiện tại cho gói trước khi tìm kiếm ở nơi khác (mặc dù tôi nghĩ rằng thứ tự này đang thay đổi trong 3). Vẫn muốn có một cách để đóng gói tất cả các phụ thuộc là một tệp thực thi mà người dùng có thể chạy và không có bất kỳ vấn đề nào. Tôi cho rằng nó không phải là một .py. –