Py2Exe: сбой загрузки DLL

При попытке использовать py2exe для конвертации простой Python-игры, которую я сделал в exe-формат, я получил следующую ошибку:

Traceback (most recent call last):
  File "C:\Users\Tali\Desktop\2exe.py", line 4, in <module>
    setup(console=['test.py'])
  File "C:\Python\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 243, in run
    self._run()
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 305, in _run
    dlls = self.find_dlls(extensions)
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 389, in find_dlls

    self.dll_excludes)
  File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 1021, in find_dep
endend_dlls
    import py2exe_util
ImportError: DLL load failed: %1 is not a valid Win32 application.

Я искал в Интернете около часа, пытался что-то изменить в моей программе. Ничего не работает Хотя моя программа использует «случайную» библиотеку, я не видел ни одного случая, в котором бы она вызывала подобные проблемы.

Сценарий установки:

from distutils.core import setup
import py2exe

setup(console=['test.py'])

Да, оба сценария находятся в одной папке (рабочий стол). Если это имеет значение, я работаю в Windows Vista с Python 2.7

Спасибо всем большое заранее.

 pyfunc23 сент. 2010 г., 22:12
Можете ли вы проверить, если у вас нет проблемы 64-битной / 32-битной несовместимости.
 joaquin23 сент. 2010 г., 23:43
Как вы выполняете сценарий? обычно установочный файл называется setup.py (не 2exe.py) и должен называться «python setup.py py2exe»
 ChristopheD23 сент. 2010 г., 22:28
Попробуйте запустить средство обхода зависимостей для получившегося исполняемого файла, чтобы узнать, нужно ли вам добавить дополнительные зависимости ...
 joaquin24 сент. 2010 г., 00:33
Если вы не можете запустить Python из командной строки, у вас есть проблема. Есть ли python.exe в вашем PATH? Если вы наберете 'python', вы должны получить оболочку python ... Существуют другие программы exe, которые вы не можете выполнить и получите ошибку windows ?. Какой дистрибутив Python вы установили?
 Niv23 сент. 2010 г., 22:24
У меня Vista 32-разрядная, и я не знаю, как я должен проверить на такую ​​несовместимость.
 guettli07 авг. 2018 г., 12:35
не используйте py2exe последней стабильной версии десять лет (2008).
 Niv24 сент. 2010 г., 00:45
Я не уверен, на какой путь вы ссылаетесь. У меня не было никаких проблем с любой другой программой, и я установил ее через веб-сайт Python:python.org/ftp/python/2.7 , Python устанавливается непосредственно на C, если это имеет какое-либо значение.
 Niv24 сент. 2010 г., 00:08
1) Командная строка, введите CD Desktop. 2) наберите setup.py py2exe (после того, как я изменил имя на setup) 3) подождите, пока текст накатится, и получите сообщение об ошибке. Когда я пытаюсь использовать префикс «python», я получаю сообщение об ошибке «python не распознается ...»
 Niv23 сент. 2010 г., 22:32
Там нет в результате exe. Произошла ошибка при попытке превратить Python в исполняемый файл. И да, я дважды проверил.
 Niv24 сент. 2010 г., 11:56
@joaquin - я попытался добавить системную переменную Python через. панель управления, которая ведет непосредственно к python.exe. Даже после перезагрузки эффекта нет. @luc - Ничего серьезного. Просто короткая текстовая игра с угадыванием числа, которую я сделал.
 joaquin24 сент. 2010 г., 00:56
в xp вы можете проверить / изменить свой PATH в Панели управления-> Система-> Дополнительные параметры-> Варианты среды, затем в 'Системные переменные' вы должны иметь c: / Python27 в списке путей в переменной пути. В качестве альтернативы вы можете проверить свой PATH в оболочке Windows (C: \> PATH)
 luc24 сент. 2010 г., 07:40
Является ли ваше приложение консольным? Можете ли вы дать больше информации о вашем приложении

Ответы на вопрос(9)

 user147993107 авг. 2013 г., 10:35
Это фактически исправило это для меня. У меня была проблема с компиляцией 32-битного Python py2exe на 64-битной машине с установленным python-mysql. Я получил ошибку DLL. Но загрузка среды выполнения x86 Visual C ++ 2008 и восстановление моей установленной версии работали.

я пытался сделать это, даже когда у меня все было правильно, это было бы ошибкой, хотя я нашел отличную программу на python gui2exe, это делает его чрезвычайно простым для создания exe (или любого другого поддерживаемые форматы).

Gui2exe:http://code.google.com/p/gui2exe/downloads/detail?name=GUI2Exe_0.5.0.zip

Примеры:http://code.google.com/p/gui2exe/wiki/GUI2ExeExamples

 Zimm3r24 сент. 2010 г., 21:43
@niv да, это просто хороший интерфейс, который, кажется, решает некоторые проблемы волшебным образом и также облегчает его (хорошо, может быть, не волшебство, но мои проблемы с dll исчезли после его использования)
 Niv24 сент. 2010 г., 11:57
И это также работает для сценариев не-GUI?
 korona04 мар. 2011 г., 11:38
Я сделал это, и он дал ту же самую трассировку стека. Это просто интерфейс для того же нерабочего программного обеспечения.

Из ваших комментариев я вижу, что вы делаете это в командной строке:

setup.py py2exe 

отPy2exe учебник«sтретий шаг, вы должны сделать это вместо этого (в командной строке):

python setup.py py2exe

Второй взгляд на комментарии к первоначальному вопросу показывает, что это предложение уже было сделано. +1 к Хоакину за это.

Чтобы попытаться ответить на ваш вопрос еще раз: Хоакин также упомянул, что это может быть проблемой пути. Вместо того, чтобы пытаться это исправить, вы можете рассмотреть более простой вариант копирования файлов Python в C: \ Python. Затем в командной строке:

cd C:\Python
python setup.py py2exe

Это всегда работало для меня

Надеюсь это поможет

 joaquin24 сент. 2010 г., 01:01
Это уже было указано в комментариях. Оператор не может получить только «python», создающий оболочку python.
 jarmod30 мая 2012 г., 20:00
Я считаю плохой идеей копировать исходные файлы Python в каталог установки Python. Вместо этого вам следует явно запустить нужный Python EXE, например, «c: \ python \ python setup.py py2exe». Или вы должны изменить диск / каталог на c: \ python (cd / d c: \ python) и затем запустить "python d: \ somefolder \ setup.py py2exe".

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

У меня тоже была такая же проблема. Я работал на Windows 7 64 бит и установил Python 2.7. Моя проблема была связана с тем, что я установил py2exe-0.6.9.win32-py2.7.exe и установщик не смог найти python, даже если он нашел папку установки. Бегpython setup.py py2exe на этом этапе выдал мне те же самые ошибки, которые вы видите.

Затем я загрузил py2exe-0.6.9.win64-py2.7.amd64.exe изэта страница и установил его. Установка прошла без сучка иpython setup.py py2exe В игре много консольного вывода, созданы папки build и dist и ожидаемый исполняемый файл.

py2exe выглядит очень устаревшим. Последнему релизу исполнилось четыре года (с 2014 года по сегодняшний день 2018 год)

Последняя запись в разделе "новости" на главной странице сайта от 2008 года (десять лет).

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

У меня была точно такая же проблема.

Поскольку у меня Windows 7 64bit, я скачал py2exe-0.6.9.win64-py2.6.amd64.exe, который, как я полагаю, является 64-битной версией py2exe. но это не сработало, и у меня была такая же ошибка.

Я изменил на py2exe-0.6.9.win32-py2.6.exe, и он работал нормально.

Я предполагаю, что вы должны сопоставить 32-битную или 64-битную с установкой Python вместо самой Windows.

Кстати, «setup.py py2exe» или «python setup.py py2exe» действительно не имеет значения, если вы указали Windows открывать * .py с помощью python во время установки python.

 jarmod30 мая 2012 г., 19:55
Вы определенно можете столкнуться с проблемами, если предположите, что «setup.py» идентичен «python setup.py». Нередко бывает, что на одном компьютере установлено несколько установок Python (v2.x и, возможно, как 32-битные, так и 64-битные варианты v3.x). Если вы переключаетесь между различными версиями Python, используя сценарий CMD, который устанавливает переменные среды PATH и PYTHONHOME, тогда «python setup.py» будет запускаться в зависимости от того, какой файл python.exe будет первым в вашем PATH, но запуск «setup.py» будет запускать любую версию Python. Вы установили последний, потому что он связан с расширением PY. Так что будьте осторожны.

я искал и пришел сюда. Я попробовал способ подсказки Сяо-ю, но я не работал. Так что я нашел это изhttp://www.py2exe.org/index.cgi/Tutorial#Step525.2.1. Комплектация DLL времени выполнения C

Если у вас есть права на распространение MSVCR90.dll, его копия должна быть в вашей установке Visual Studio в папке VC \ redist \ x86 \ Microsoft.VC90.CRT. Начиная с Visual Studio 2008, вы не можете просто скопировать этот файл DLL - вам также понадобится файл манифеста, который вы там найдете. В файле redist.txt говорится, что вы должны распространять все три библиотеки DLL и файл неизмененного манифеста, и нарушение лицензионного соглашения является распространением только одной библиотеки DLL без других (хотя py2exe требуется только MSVCR90.dll.) Соответствующий отрывок из файла redist.txt выглядит следующим образом: -----------------------

так что попробуй.

загрузив «Компилятор Microsoft Visual C ++ для Python 2.7»http://www.microsoft.com/en-pk/download/details.aspx?id=44266

я использовал Python 2.7 (32 бита) на Windows 7 (64 бита) сpy2exe-0.6.9.win64-py2.7.amd64.exeТаким образом, проблема была в том, что я использовал 32-битный Python и 64-битный py2exe. Если вы не знаете, является ли используемый вами пакет Python 32-разрядным или 64-разрядным, запустите idle.bat изC:\Python27\Lib\idlelib\.

Первая строка в приглашении окна Python покажет вам детали пакета Python.

Я удалилpy2exe-0.6.9.win64-py2.7.exe запустив"pip uninstall py2exe" и установленpy2exe-0.6.9.win64-py2.7.amd64.exe который работал для меня.

Ваш ответ на вопрос