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