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

Создайте автономные окна exe, для которых не требуется pythonXX.dll

Есть ли способ создать автономный .exe из python script. Исполняемые файлы, созданные с помощью py2exe, могут запускаться только с pythonXX.dll. Я хотел бы получить полностью автономный .exe, который не требует установки библиотеки времени исполнения python. Это похоже на проблему с привязкой, но вместо нее используется статическая библиотека вместо динамической, и было бы полезно применить полосу для удаления неиспользуемых символов.

Любая идея?

Спасибо.

Алессандро

4b9b3361

Ответ 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 файла при двойном щелчке.