Подтвердить что ты не робот

Кросс-компиляция Python script в Linux в исполняемый файл Windows

У меня есть Python script, который я хотел бы скомпилировать в исполняемый файл Windows. Теперь py2exe отлично работает с Windows, но я хотел бы иметь возможность запускать это из Linux. У меня есть Windows на моей машине разработки, но Linux - это моя основная платформа для разработчиков, и я получаю от того, чтобы перезагружать Windows, чтобы создать .exe. Я также не хочу покупать вторую лицензию Windows для работы на виртуальной машине, такой как VirtualBox. Любые идеи?

PS: Я знаю, что py2exe точно не скомпилирует файл python так же, как пакет your script с интерпретатором Python. Но в любом случае результатом является то, что вам не нужен Python для запуска script.

4b9b3361

Ответ 1

Вы посмотрели PyInstaller?

Кажется, что 1.4 поддерживает кросс-компиляцию

http://www.pyinstaller.org/browser/tags/1.4/doc/CHANGES.txt говорит:

Добавьте поддержку кросс-компиляции: PyInstaller теперь может создавать исполняемые файлы Windows при работе в Linux. Более подробную информацию см. В документации.

Я сам не пробовал.

Я надеюсь, что это поможет

Ответ 2

Как упоминалось другими автоответчиками, функция кросс-компиляции удаляется из PyInstaller с 1.5. Здесь показано, как упаковать исполняемый файл Windows из сценариев Python, используя PyInstaller под wine.

Шаг 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 на вино

$ 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

Подробнее см. здесь.

Ответ 3

Вы можете запустить Windows в VirtualBox, чтобы запустить py2exe. VBox предлагает мощный клиент командной строки для автоматизации задач, поэтому вы можете легко интегрироваться в свой процесс разработки.

Ответ 4

Я тестировал py2exe внутри вина, и он функционирует. Вам нужно будет установить python в вине, чтобы он работал, или если вы используете только стандартный libarary, вы можете связать py2exe с py2exe с машиной Windows, а затем использовать его в вине. Просто имейте в виду, что вам нужна одна и та же версия библиотек визуальных библиотек ms в вине, которые использовались для компиляции python, или что-то не будет работать должным образом.