Кросс-компиляция скрипта 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, или вещи не будут работать должным образом.