Сравнение инструментов
Nuitka
Nuitka напрямую компилирует python в код C++, а затем компилирует код C++ для создания исполняемого файла.Проблемы обратного синтаксического анализа вообще нет.Это очень безопасно, а поскольку исполняемый файл компилируется из C++, скорость работы также будет улучшен.
PyInstaller
PyInstaller можно использовать для упаковки приложений Python, а упакованные программы можно запускать на машинах без установленного интерпретатора Python. PyInstaller поддерживает Python 2.7 и Python 3.3+. Его можно использовать в Windows, Mac OS X и Linux, но он не кроссплатформенный, но если вы хотите упаковать его в файл .exe, вам нужно запустить PyInstaller в системе Windows для работы с пакетом; mac, вам необходимо установить его на Mac, который используется в ОС.
Установка и использование программного обеспечения
тестовый файл
имя файла:hello.py
Содержание кода:
#!/bin/env python
print 'hello world!'
Nuitka
Установить
# 本地安装
mkdir nuitka_source && cd nuitka_source
git clone https://github.com/Nuitka/Nuitka.git ./
python setup.py install
использовать
# 编译单个文件
nuitka ./hello.py
# 编译某个目录的所有文件
nuitka ./hello.py --include-plugin-directory=./ --remove-output --output-dir=./output -o ./output/hello
--include-plugin-directory: 编译依赖的目录
--remove-output: 移除编译输出的中间态文件
--output-dir: 指定输出信息的文件目录
-o: 指定输出的文件名(需包含所在目录)
PyInstaller
Установить
# pip 方式安装
pip install pyinstaller
# pip 方式更新
pip install --upgrade pyinstaller
# 本地安装
mkdir pyinstaller_source && cd pyinstaller_source
git clone https://github.com/pyinstaller/pyinstaller.git ./
python setup.py install
использовать
pyinstaller -F ./hello.py
возникшие проблемы
- После того, как инструмент pyinstaller будет установлен на машине разработки, при выполнении скомпилированного файла будет сообщено об ошибке.Сообщение об ошибке выглядит следующим образом:
Floating point exception (core dumped)
Проверка информации онлайн вызвана несовместимостью версии системы.Для справки:GitHub.skyuse.com/blog/2017/0…
- При использовании инструмента nuitka из-за того, что версия gcc по умолчанию для машины разработки слишком низкая, сообщается об ошибке.Сообщение об ошибке выглядит следующим образом:
Input: nuitka hello.py
Nuitka:WARNING:Not recursing to 'log_parser' (/home/work/wangming/code/videoae/script_offline/uniondata/log_parser.py), please specify --nofollow-imports (do not warn), --follow-imports (recurse to all), --nofollow-import-to=log_parser (ignore it), --follow-import-to=log_parser (recurse to it) to change.
Nuitka:WARNING:Not recursing to 'field_dict' (/home/work/wangming/code/videoae/script_offline/uniondata/field_dict.py), please specify --nofollow-imports (do not warn), --follow-imports (recurse to all), --nofollow-import-to=field_dict (ignore it), --follow-import-to=field_dict (recurse to it) to change.
Nuitka:WARNING:Not recursing to 'colored_cli' (/home/work/wangming/code/videoae/script_offline/uniondata/colored_cli.py), please specify --nofollow-imports (do not warn), --follow-imports (recurse to all), --nofollow-import-to=colored_cli (ignore it), --follow-import-to=colored_cli (recurse to it) to change.
The gcc compiler gcc (version 3.4.5) doesn't have the sufficient version (>= 4.4).
решение:
export PATH=/opt/compiler/gcc-4.8.2/bin:$PATH