исполняемый файл, созданный с помощью py2exe, не работает на 32-разрядной версии Windows XP

Я создал исполняемый файл с помощью py2exe на 64-битной машине с Windows 7 и распространил программу.

На 32-битной машине Windows XP программа отказывается работать, проявляя следующее поведение:

всплывающее окно говорит: Program.exe не является допустимым приложением win32.

В окне командной строки написано "доступ запрещен"

Я проверил разрешения, и пользователь имеет полный контроль и полное право собственности на файл и его родительские каталоги. Так что это не может быть проблемой.

Единственная возможная возможность, которую я могу представить, - это несовместимость ОС/архитектуры. Как мне это исправить?

Мой файл setup.py, используемый для создания исполняемого файла:

from distutils.core import setup
import py2exe

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

Я выполнил следующее для создания exe:

python setup.py py2exe

person Razor Storm    schedule 16.06.2011    source источник
comment
Попробуйте создать исполняемый файл на 32-битной машине.   -  person inspectorG4dget    schedule 17.06.2011
comment
не будет ли с уверенностью сказать, что вы, вероятно, создали 64-битный исполняемый файл, который не будет работать на 32-битном процессоре?   -  person jcomeau_ictx    schedule 17.06.2011
comment
@jcomeau_ictx, это мое предположение. Есть ли способ создать 32-битный исполняемый файл на 64-битной машине? Через какую-то эмуляцию магии?   -  person Razor Storm    schedule 17.06.2011
comment
может быть, но у вас будет больше шансов получить ответ, если вы измените свой вопрос на то, что вы только что задали мне. Я лично не использовал py2exe   -  person jcomeau_ictx    schedule 17.06.2011
comment
Windows 7 — запустите py2exe и сеанс cmd в режиме совместимости. Возможно это поможет   -  person inspectorG4dget    schedule 17.06.2011
comment
попробуйте создать исполняемый файл на виртуальной машине с работающими на ней windowsXP и 32-битным python   -  person joaquin    schedule 17.06.2011
comment
Оказывается, единственной несовместимостью был интерпретатор Python. Я установил 32-битный Python и 32-битные версии всех модулей, которые я использовал, и теперь он работает. Есть еще проблемы, но это другой вопрос. Спасибо, парни   -  person Razor Storm    schedule 17.06.2011


Ответы (2)


Я думаю, вам просто нужно установить 32-битный python и 32-битный py2exe на свой компьютер.... см. Может ли 64-битный Python создавать 32-битные исполняемые файлы Windows

person bwawok    schedule 16.06.2011
comment
Сделал это, и это сработало, оказалось, что интерпретатор Python был единственным, у кого были проблемы с совместимостью. - person Razor Storm; 17.06.2011

Распространенная проблема при создании исполняемого файла в Windows 7 и развертывании в Windows XP.

В соответствии с руководством по py2exe вам необходимо включить MVC DLL. Но туториал старый и в скрипте указан поиск только в одном каталоге. Раньше каталог содержал все DLL и манифест, но теперь он содержит только DLL. Вам нужно указать другой каталог для файла манифеста. Если вы этого не сделаете, у вас будет такая ошибка:

this application has failed to start because the application configuration is incorrect

Если вы используете 64-разрядную версию Windows 7, вам потребуется DLL среды выполнения Microsoft Visual C. Не забудьте манифест, который не находится в том же каталоге в Windows 7. Вам нужно адаптировать скрипт следующим образом:

data_files = [("VC90", glob(r'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91\*.*')),
            ("VC90", glob(r'C:\Windows\winsxs\Manifests\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91.manifest'))
]
setup(
    data_files=data_files,
    console = [{'script': "C:\test\my_program.py"}],
    zipfile = None,
)

Теперь вы можете развернуть каталог «dist», содержащий все файлы и зависимости.

person Gagou    schedule 10.11.2011
comment
вы должны включить из glob import glob - person tovmeod; 14.02.2012