Создайте автономные окна exe, для которых не требуется pythonXX.dll
Есть ли способ создать автономный .exe из python script.
Исполняемые файлы, созданные с помощью py2exe, могут запускаться только с pythonXX.dll.
Я хотел бы получить полностью автономный .exe, который не требует установки библиотеки времени исполнения python.
Это похоже на проблему с привязкой, но вместо нее используется статическая библиотека вместо динамической, и было бы полезно применить полосу для удаления неиспользуемых символов.
Любая идея?
Спасибо.
Алессандро
Ответы
Ответ 1
Вы можете сделать это в последней версии py2exe...
Просто добавьте что-то вроде кода ниже в ваш файл setup.py
(ключевая часть - "bundle_files": 1).
Чтобы включить ваш пакет TkInter в установку, используйте ключ "включает".
distutils.core.setup(
windows=[
{'script': 'yourmodule.py',
'icon_resources': [(1, 'moduleicon.ico')]
}
],
zipfile=None,
options={'py2exe':{
'includes': ['tkinter'],
'bundle_files': 1
}
}
)
Ответ 2
Из-за того, как работает динамический компоновщик Windows, вы не можете использовать статическую библиотеку, если используете Python или .dll модули Python; Библиотеки DLL, загруженные в Windows, автоматически не разделяют пространство символов с исполняемым файлом и поэтому требуют отдельной библиотеки DLL, содержащей символы Python.
Ответ 3
Если ваша цель иметь один исполняемый файл - облегчить загрузку/отправку по электронной почте и т.д., я решил это, связав вывод py2exe, используя Inno Setup. Это на самом деле лучше, чем наличие одного исполняемого файла, потому что вместо предоставления исполняемого файла, который можно удалить в какой-либо каталог, хорошо выполненное приложение Windows предоставит деинсталлятор, появится в апплете "Установка и удаление программ" и т.д. Inno обрабатывает все это для вас.
Ответ 4
Другим решением является создание одного exe с python и всех зависимостей, установленных внутри него, включая python.dll. В оболочке немного магии, но она просто работает. Подробности здесь:
http://code.google.com/p/pylunch/downloads/detail?name=PyLunch-0.2.pdf
Ответ 5
Это не лучший способ сделать это, но вы можете подумать об использовании исполняемого SFX-архива с файлами .exe и .dll внутри и установить его для выполнения вашего .exe файла при двойном щелчке.