Процесс, чтобы преобразовать простой сценарий Пайтона в исполняемый файл Windows [дубликат]

У этого вопроса уже есть ответ здесь:

Я написал сценарий, который поможет пользователю Windows в ее повседневной жизни. Я хочу просто послать ей .exe и не попросить, чтобы она установила питона, dlls или имела, чтобы иметь дело с любыми дополнительными файлами.

Я прочитал много stackoverflow записей относительно компилирования сценариев Пайтона в исполняемые файлы. Я немного смущен, поскольку есть много вариантов, но некоторые кажутся датированными (никакие обновления с 2008), и ни один не был достаточно прост для меня не спросить это прямо сейчас после нескольких часов, проведенных на это.

Я надеюсь, что есть лучший, актуальный способ сделать это.

Я изучил:

но или я не мог заставить их работать или не мог понять, как получить результат, в котором я нуждаюсь. Самое близкое, которое я получил, было с py2exe, но он все еще дал мне MSVCR71.dll

Я ценил бы пошаговый ответ, когда я был также неспособен следовать некоторым щипающим ответам здесь, которые требуют некоторого предшествующего понимания того, как использовать py2exe или некоторые из других инструментов.

Я использую Пайтона 2.5, поскольку один из модулей только доступен для той версии.

78
задан greye 26 January 2010 в 00:39
поделиться

4 ответа

Pyinstaller создаст исполняемый файл, если вы используете опцию - onefile (хотя На самом деле это экстракты, затем пробегает сама).

Есть простой учебник Pyinstaller . Если у вас есть какие-либо вопросы о его использовании, пожалуйста, опубликуйте их ...

32
ответ дан 24 November 2019 в 10:40
поделиться

Вы можете посмотреть, может ли ваше приложение под управлением IronPython. Если это так, вы можете скомпилировать его в EXE http://www.codeplex.com/arnpython

2
ответ дан 24 November 2019 в 10:40
поделиться

Вы используете Соединение: Didfailwitherror: ? Может быть время ожидания, который предотвращает успешное завершение загрузки.

Постарайтесь избавиться от @synchronized блоков и посмотрите, что происходит.

Строка внутри квадратных скобок, кажется, идентификатор потоков, как вы уже догадались. Так что, возможно, вы заблокированы в @synchronized . На самом деле, я не вижу причину для переключения потока - все проблемный код должен работать в основной ните ( PerformeselectorOnmaintHaintHead ...

Во всяком случае, нет необходимости использовать оба @synchronized и ShareSelectoronMaintHaintHead .

Кстати, я не видел NSURLConnection * Connection = [[NSURLConnection Alloc] initWithrequest: Запрос делегата: Self]; линия. Где вы инициируете соединение?

Как для параллельных загрузок - я думаю, что вы можете загрузить более одного файла за раз с тем же кодом, который вы используете здесь. Просто создайте отдельное соединение для каждой загрузки.

-121--5086305-

Я бы присоединился к @nicholas в рекомендации Pyinstaller (с флагом - onefile ), но будет предупрежден : сделать Не Используйте «Последний релиз», Pyinstaller 1.3 - это лет . Используйте «Предварительный выпуск» 1.4, загрузите его здесь - или даже лучше код из SVN REPO - Установите SVN и запустить SVN CO http: // svn.pyinstaller.org/trunk Pyinstaller .

Как подразумевает @nicholas, динамические библиотеки не могут быть беги из одного и того же файла, что и остальная часть исполняемого, но, к счастью, они могут быть , упаковываются вместе со всем остальным в «Самосваркающий» исполняемый файл, который будет распаковать себя в некоторой временной каталоге по мере необходимости; Pyinstaller делает хорошую работу по этому поводу (и во многих других вещах - Py2exe более популярно, но Pyinstaller , на мой взгляд, предпочтительнее во всех других отношениях).

9
ответ дан 24 November 2019 в 10:40
поделиться

Используя py2exe, включите это в свой setup.py:

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "YourScript.py"}],
    zipfile = None,
)

затем вы можете запустить его через командную строку / Idle, оба варианта работают для меня. Надеюсь, это поможет

13
ответ дан 24 November 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: