приложение Python для exe не работает на WinSRV2003

Я создал небольшое приложение для отправки писем, когда что-то не так с сервером. Использовал py2exe для создания exe-файла. Хотя он отлично работает на Win7, у меня проблемы с запуском на WinSRV2003. Я не верю, что это как-то связано с самим кодом. Пожалуйста, смотрите импорт ниже

import pyodbc, sys, smtplib, os
from datetime import date
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
import email.iterators
import email.generator

файл setup.py:

from distutils.core import setup
import py2exe
import modulefinder

modulefinder.AddPackagePath("mail.mime", "base")
modulefinder.AddPackagePath("mail.mime", "multipart")
modulefinder.AddPackagePath("mail.mime", "nonmultipart")
modulefinder.AddPackagePath("mail.mime", "audio")
modulefinder.AddPackagePath("mail.mime", "image")
modulefinder.AddPackagePath("mail.mime", "message")
modulefinder.AddPackagePath("mail.mime", "application")

setup(console=['capfile_tester.py'],
    options = { "py2exe": { "includes": "decimal, datetime, email" } })

А также одна строка из вывода py2exe, которая может быть интересна

Следующие модули отсутствуют ['_scproxy']

Сообщение об ошибке при попытке запуска:

Не удалось запустить это приложение из-за неправильной конфигурации приложения. Переустановка приложения может решить проблему.

Что пришло мне в голову, так это то, что могут отсутствовать некоторые ключи реестра, которые позволят запускать приложение?


person MichalKlich    schedule 10.11.2009    source источник
comment
Не увидела вашего комментария, сейчас попробую.   -  person MichalKlich    schedule 20.11.2009


Ответы (4)


поиск по _scproxy указывает на то, что _scproxy — это новый модуль в версии 2.6. Возможно, как-то замешан Python 2.5? Предполагается, что py2exe создает полностью автономный исполняемый файл, поэтому я не понимаю, как это возможно.

Другая возможность заключается в том, что _scproxy зависит от dll, которой нет в Windows 2003? Вы пытались запустить свою программу без py2exe на Win2003?

person Ned Batchelder    schedule 10.11.2009
comment
К сожалению, они могут не позволить мне установить python на сервер, но я спрошу. Спасибо. - person MichalKlich; 12.11.2009

Я бы сказал, что это проблема с отсутствующей DLL. Вы должны проверить и увидеть DLL вашего приложения (или предполагается, что они существуют на целевом компьютере). Я думаю, вы можете сделать это с помощью depends.exe, поставляемого с Visual Studio.

РЕДАКТИРОВАТЬ: я только что вспомнил. Убедитесь, что вы запускаете py2exe с установкой Python 2.5. В версии 2.6 были некоторые ошибки, из-за которых exe не работал на нескольких машинах.

person Geo    schedule 10.11.2009
comment
Хороший совет, я думал, что это может иметь какое-то отношение к архитектуре, но когда я создал exe на 32-битной виртуальной машине XP, он все равно не будет работать на сервере 2003. Мне все еще нужно проверить зависимости dll. - person MichalKlich; 12.11.2009
comment
У меня была та же проблема, что и у вас. Я написал скрипт, использующий PIL, и на нескольких машинах он не работал. Оказывается, это было из-за проблемы с DLL. Кроме того, убедитесь, что вы компилируете с использованием Python 2.5, а не Python 2.6. Это очень важно ! - person Geo; 12.11.2009

Поиск в Google вашего сообщения «Это приложение не удалось запустить ...» убедительно свидетельствует о том, что это проблема с DLL, возможно, с msvcp80.dll и другими. Это очень распространенное явление в последних версиях Windows/Python/py2exe, учитывая, как MS постоянно меняет библиотеки MSVCC и т. д. Различные версии Python связаны с разными библиотеками, и если они не предварительно установлены на вашей целевой машине, вы можете получить такие проблемы. Иногда работает установка соответствующего распространяемого пакета от MS.

Обратите внимание, что предупреждения py2exe, в данном случае о _scproxy, почти всегда можно игнорировать. Очень часто можно получить ложные сообщения о таких отсутствующих модулях. В 95% случаев мы можем игнорировать их, даже когда видим буквально десятки «недостающих» модулей.

person Peter Hansen    schedule 03.12.2009

У меня была аналогичная проблема, когда были задействованы COM-объекты. Может, и здесь так. Это описание решило мои проблемы. Тогда мое программное обеспечение будет работать в разных версиях Windows, чего раньше не было.

person Bertolt    schedule 15.01.2010