Приложение Python для EXE не работает на WinSRV2003 - PullRequest
2 голосов
/ 10 ноября 2009

Я создал небольшое приложение для отправки электронных писем, когда что-то не так с сервером. Используется 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']

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

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

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

Ответы [ 4 ]

1 голос
/ 15 января 2010

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

1 голос
/ 10 ноября 2009

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

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

1 голос
/ 04 декабря 2009

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

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

1 голос
/ 10 ноября 2009

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

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

...