Có hai cách bạn có thể thực hiện để giải quyết vấn đề của mình
- Sử dụng trình tạo tĩnh, như đóng băng hoặc
pyinstaller
hoặcpy2exe
- Biên dịch bằng cách sử dụng
cython
Tôi sẽ giải thích cách bạn có thể làm điều đó bằng cách sử dụng phương pháp thứ hai, vì phương pháp đầu tiên không phải là nền tảng và phiên bản chéo, và đã được giải thích trong các câu trả lời khác. Ngoài ra, sử dụng các chương trình như pyinstaller thường dẫn đến kích thước tệp lớn, trong đó khi sử dụng cython sẽ dẫn đến tệp có kích thước KBs
Đầu tiên, hãy cài đặt cython
. Sau đó, đổi tên tệp python của bạn (giả sử test.py
) thành .pyx
tệp
sudo pip install cython
mv test.py test.pyx
Sau đó, bạn có thể sử dụng cython
cùng với GCC để biên dịch nó ( cython
tạo tệp C từ tệp Python .pyx
và sau đó GCC biên dịch tệp C)
(tham khảo https://stackoverflow.com/a/22040484/5714445 )
cython test.pyx --embed
gcc -Os -I /usr/include/python3.5m -o test test.c -lpython3.5m -lpthread -lm -lutil -ldl
LƯU Ý : Tùy thuộc vào phiên bản python của bạn, bạn có thể phải thay đổi lệnh cuối cùng. Để biết bạn đang sử dụng phiên bản python nào, chỉ cần sử dụng
$ python -V
Bây giờ bạn sẽ có một tệp nhị phân 'kiểm tra', đó là những gì bạn đang tìm kiếm
Những điều khác cần lưu ý :
- Cython được sử dụng để sử dụng các định nghĩa Biến loại C để cấp phát bộ nhớ tĩnh nhằm tăng tốc các chương trình Python. Tuy nhiên, trong trường hợp của bạn, bạn vẫn sẽ sử dụng các định nghĩa Python truyền thống.
- Nếu bạn đang sử dụng các thư viện bổ sung (chẳng
opencv
hạn như), bạn có thể phải cung cấp thư mục cho họ bằng cách sử dụng -L
và sau đó chỉ định tên của thư viện sử dụng -l
trong GCC Flags. Để biết thêm thông tin về điều này, vui lòng tham khảo cờ GCC