Кросс-компиляция Python script в Linux в исполняемый файл Windows
У меня есть Python script, который я хотел бы скомпилировать в исполняемый файл Windows. Теперь py2exe
отлично работает с Windows, но я хотел бы иметь возможность запускать это из Linux. У меня есть Windows на моей машине разработки, но Linux - это моя основная платформа для разработчиков, и я получаю от того, чтобы перезагружать Windows, чтобы создать .exe
. Я также не хочу покупать вторую лицензию Windows для работы на виртуальной машине, такой как VirtualBox. Любые идеи?
PS: Я знаю, что py2exe
точно не скомпилирует файл python так же, как пакет your script с интерпретатором Python. Но в любом случае результатом является то, что вам не нужен Python для запуска script.
Ответы
Ответ 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, или что-то не будет работать должным образом.