Кросс-компиляция скрипта Python в Linux в исполняемый файл Windows
у меня есть скрипт Python, который я хотел бы скомпилировать в исполняемый файл Windows. Теперь,py2exe
отлично работает с Windows, но я хотел бы иметь возможность запускать это из Linux. Я!--4-->do есть окна на моей машине разработки, но Linux-моя основная платформа разработки, и я начинаю болеть от перезагрузки в Windows, чтобы создать .exe
. Я не хочу покупать вторую лицензию Windows для запуска в виртуальной машине, например VirtualBox. Есть идеи?
PS: Я известно, что py2exe
точно не компилирует файл python, а пакует ваш скрипт с интерпретатором Python. Но в любом случае, в результате вам не нужен Python, установленный для запуска сценария.
4 ответов
ты PyInstaller?
похоже, что 1.4 поддерживает кросс-компиляцию
http://www.pyinstaller.org/browser/tags/1.4/doc/CHANGES.txt говорит:
добавить поддержку кросс-компиляции: PyInstaller теперь может создавать исполняемые файлы Windows при работе под Linux. Дополнительные сведения см. В документации.
Я сам не пробовал.
надеюсь, это поможет
как упоминалось другими ответчиками, функция кросс-компиляции удаляется из PyInstaller С 1.5
. Здесь показано, как упаковать исполняемый файл Windows из скриптов Python с помощью PyInstaller под вина.
Шаг 1: Установите wine и Python
sudo apt-get install wine
wine msiexec /i python-2.7.10.msi /L*v log.txt
PS: новые версии Python уже включают pip
(используется для установки pyinstaller
). Загрузите установочный пакет Python из здесь (например, python-2.7.10.msi
)
Шаг 2: Установите PyInstaller на wine
$ cd ~/.wine/drive_c/Python27
$ wine python.exe Scripts/pip.exe install pyinstaller
Successfully installed pyinstaller-3.1.1 pypiwin32-219
Шаг 3: пакет скриптов Python
пакет скриптов Python (например,HelloWorld.py
) С pyinstaller
.
$ wine ~/.wine/drive_c/Python27/Scripts/pyinstaller.exe --onefile HelloWorld.py
# filename: HelloWorld.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print('Hello World!')
исполняемый файл Windows находится в dist/
.
$ wine dist/HelloWorld.exe
Hello World!
fixme:msvcrt:__clean_type_info_names_internal (0x1e24e5b8) stub
смотрите здесь подробное описание.
вы можете запустить Windows в VirtualBox для запуска py2exe. VBox предлагает мощный клиент командной строки для автоматизации задач, поэтому его можно легко интегрировать в процесс разработки.
я протестировал py2exe внутри вина, и он работает. Вам нужно будет установить python в wine, чтобы он работал, или если вы используете только стандартную библиотеку, вы можете связать py2exe с py2exe с машины windows, а затем использовать его в wine. Просто имейте в виду, что вам нужна та же версия библиотек ms visual C в wine, что и для компиляции python, или вещи не будут работать должным образом.