Існує два шляхи вирішення проблеми
- Використовуйте статичний конструктор, наприклад, freeze, або
pyinstaller
, абоpy2exe
- Складіть за допомогою
cython
Я поясню, як ви можете зробити це, використовуючи другий, оскільки перший метод не є крос-платформним і версією, і це пояснювалося в інших відповідях. Крім того, використання таких програм, як pyinstaller, зазвичай призводить до величезних розмірів файлів, де як використання cython призведе до файлу розміром в КБ.
Спочатку встановіть cython
. Потім перейменуйте файл python (скажімо test.py
) у .pyx
файл
sudo pip install cython
mv test.py test.pyx
Потім ви можете використовувати cython
разом із GCC для його компіляції ( cython
створює файл C з файлу Python .pyx
, а потім GCC компілює файл C)
(посилання на 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
ПРИМІТКА . Залежно від вашої версії python, можливо, доведеться змінити останню команду. Щоб знати, яку версію python ви використовуєте, просто використовуйте
$ python -V
Тепер у вас буде «тест» двійкового файлу, що саме ви шукаєте
Інші речі, на які слід звернути увагу :
- Cython використовується для використання визначень змінних типу C для статичного розподілу пам'яті для прискорення програм Python. Однак у вашому випадку ви все одно будете використовувати традиційні визначення Python.
- Якщо ви використовуєте додаткові бібліотеки (наприклад
opencv
, наприклад), можливо, вам доведеться надати їм каталог за допомогою, -L
а потім вказати ім'я бібліотеки, використовуючи -l
в GCC Flags. Для отримання додаткової інформації щодо цього, будь ласка, зверніться до прапорців GCC