2

サーバーに問題が発生したときにメールを送信するための小さなアプリを作成しました。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出力からの1行

次のモジュールが見つからないようです ['_scproxy']

起動しようとすると、次のエラー メッセージが表示されます。

アプリケーションの構成が正しくないため、このアプリケーションを開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります。

私の頭に浮かんだのは、アプリの実行を許可するいくつかのレジストリキーが欠落している可能性があるということですか?

4

4 に答える 4

1

これはDLLの欠落の問題だと思います。DLL のアプリケーション バンドルをチェックして確認する必要があります (または、ターゲット コンピューターに存在することを前提としています)。depends.exeVisual Studio に付属の でそれができると思います。

編集:思い出しただけです。Python 2.5 インストールで py2exe を実行していることを確認してください。2.6 にはいくつかのバグがあり、いくつかのマシンで exe が動作しませんでした。

于 2009-11-10T11:38:32.380 に答える
1

_scproxyを検索すると、_scproxy が 2.6 の新しいモジュールであることが示されているようです。おそらくどういうわけかPython 2.5が関係していますか?py2exe は完全に自己完結型の実行可能ファイルを作成することになっているため、それがどのように可能かはわかりません。

もう 1 つの可能性は、_scproxy が Windows 2003 で使用できない dll に依存しているということですか? Win2003 で py2exe なしでプログラムを実行してみましたか?

于 2009-11-10T11:38:55.923 に答える
1

COMオブジェクトが関係する同様の問題がありました。ここもそうなのではないでしょうか。この説明は私の問題を解決しました。その後、私のソフトウェアはさまざまな Windows バージョンで実行されるようになりましたが、以前はそうではありませんでした。

于 2010-01-15T09:11:00.600 に答える
1

「このアプリケーションは開始できませんでした...」というメッセージを検索すると、これが DLL の問題であることが強く示唆されます。これは、MS が MSVCC ライブラリなどを変更し続けていることを考えると、最近の Windows/Python/py2exe で非常によくあることです。異なる Python バージョンは異なるライブラリにリンクされており、それらがターゲット マシンに事前にインストールされていない場合、このような問題が発生する可能性があります。MS から適切な再配布可能パッケージをインストールすると、うまくいく場合があります。

py2exe の警告 (この場合は _scproxy に関するもの) は、ほとんどの場合無視できることに注意してください。このような不足しているモジュールの誤ったレポートを取得することは非常に一般的です。文字通り数十のモジュールが「欠落」している場合でも、95% の確率でそれらを無視できます。

于 2009-12-03T21:34:29.863 に答える