2010-12-12 99 views

Trả lời

19

khi chuyển đổi mã từ python sang c (sử dụng Cython), nó chuyển đổi mã thành mã c có thể được biên dịch thành đối tượng được chia sẻ. để làm cho nó thực thi, bạn nên thêm "--embed" vào lệnh chuyển đổi cython. cờ này thêm chức năng 'chính' mà bạn cần, vì vậy bạn có thể biên dịch mã c thành tệp thi hành. xin lưu ý rằng bạn sẽ cần thư viện thời gian python .so để chạy exec.

11

Đọc tài liệu về Cython. Điều này cũng sẽ (hy vọng) dạy cho bạn những gì Cython và những gì nó không phải là. Cython là để tạo các phần mở rộng python (không phải là một trình biên dịch Python-to-C-trình biên dịch chung), là các đối tượng/dll được chia sẻ. Thư viện được nạp động không có chức năng main như chương trình độc lập, nhưng trình biên dịch cho rằng chúng cuối cùng liên kết một tệp thực thi. Bạn phải nói với họ bằng cách khác thông qua cờ (-shared methinks, nhưng một lần nữa, tham khảo tài liệu Cython) - hoặc thậm chí tốt hơn, không biên dịch cho mình, sử dụng setup.py cho điều này (một lần nữa, đọc tài liệu Cython).

+0

+1 để được giải thích – user225312

+2

cho tôi câu trả lời này dẫn đến việc biên soạn phần mở rộng hoạt động. câu trả lời của RoeeK giải quyết vấn đề liên kết, nhưng sau khi Python không nhập được với lỗi 'ImportError: module động không định nghĩa hàm init'. cảm ơn bạn thực sự nhiều, tôi nghĩ rằng sẽ đẹp hơn nếu viết nó với phong cách giảng dạy ít hơn mà không giả định ngu dốt như 3 rtfm gợi ý. – deeenes

0

Cách thông thường là sử dụng các biên dịch để biên dịch tập tin được tạo ra bởi cython. Điều này cũng cung cấp cho bạn tất cả các thư mục bao gồm bạn cần một cách di động.

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