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.
Я искал в Интернете около часа, пытался изменить вещи в своей программе. Ничего не работает.
Хотя моя программа использует "случайную" библиотеку, я не видел случая, когда она вызывала такую проблему.
Установка script:
from distutils.core import setup
import py2exe
setup(console=['test.py'])
Да, оба сценария находятся в одной и той же папке (Desktop). Если это имеет значение, я запускаю Windows Vista с Python 2.7
Спасибо всем заблаговременно.
Ответы
Ответ 1
У меня была точно такая же проблема.
Так как у меня 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 вместо самих окон.
Кстати, "setup.py py2exe" или "python setup.py py2exe" действительно не имеет значения, если вы указали, что окна открывают *.py с помощью python во время установки python.
Ответ 2
Я встретил ту же проблему, и я обыскал, и я пришел сюда. Я попробовал подсказку по xiao-yu, но я не работал. Поэтому я нашел это от http://www.py2exe.org/index.cgi/Tutorial#Step52:
5.2.1. Объединение библиотеки времени выполнения C
Если у вас есть права на перераспределение MSVCR90.dll, его копия должна быть установлена в вашей установке Visual Studio под VC\redist\x86\Microsoft.VC90.CRT. Начиная с Visual Studio 2008, вы не можете просто скопировать этот DLL файл - вам также нужен файл манифеста, который вы найдете там. В файле redist.txt указано, что вы должны распространять все три библиотеки DLL и файл немодифицированного манифеста, и это является нарушением лицензионного соглашения для распространения только одной из DLL без других (хотя py2exe нужен только MSVCR90.dll.) Соответствующий отрывок из файла redist.txt выглядит следующим образом: -----------------------
Итак, попробуйте.
Ответ 3
Кажется, проблема может быть решена путем загрузки правильного установщика 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 и ожидаемый исполняемый файл.
Ответ 4
Попробуйте установить распространяемый пакет Microsoft Visual С++ 2008 (x86):
http://www.microsoft.com/downloads/en/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en
Ответ 5
Я решил эту проблему, загрузив "Microsoft Visual С++ Compiler for Python 2.7"
http://www.microsoft.com/en-pk/download/details.aspx?id=44266
Ответ 6
Из ваших комментариев, я вижу, что вы делаете это в командной строке:
setup.py py2exe
из учебник py2exe третий шаг, вы должны сделайте это вместо этого (в команде promt):
python setup.py py2exe
Второй взгляд на комментарии к исходному вопросу показывает, что это предложение уже сделано. +1 для joaquin для этого.
Чтобы попытаться ответить на ваш вопрос еще раз: Хоакин также упомянул, что это может быть проблемой. Вместо того, чтобы пытаться это исправить, вы можете рассмотреть более простой вариант копирования файлов python в C:\Python. Затем в командной строке:
cd C:\Python
python setup.py py2exe
Это всегда работало для меня
Надеюсь, что это поможет
Ответ 7
Вы можете справиться с py2exe и головными болями, я пробовал это делать, даже когда у меня все было правильно, это было бы ошибкой, хотя я нашел отличную программу 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
Ответ 8
Я столкнулся с той же проблемой, я использовал 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
, который работал у меня.