私は約1年後に以下のPythonコードを実行しています。しかし、新しい仕事に移ろうとしています。私が残している部署の作業を容易にするために、このコードを.exeファイルにコンパイルする必要があります。py2exeでコンパイルした後で、PythonのMS Accessモジュール関数を呼び出せません。
私はPython 2.5と2.7に対して同じ結果を得てコンパイルを試みました。
しかし、exeファイルを実行しているとき、私はここでは次のようなエラーに
H:\development\DMS_Import_Data\dist>import_data.exe
Run Live or Development Import (L = Live, D = Dev, X = Exit):l
5:3:2012 10:56 Opening Live Database...
5:3:2012 10:56 Assuming Database already open
5:3:2012 10:56 Importing latest DMS Data...
Traceback (most recent call last):
File "import_data.py", line 79, in <module>
File "import_data.py", line 46, in run
File "<COMObject Access.Application>", line 2, in run
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, u'You made
an illegal function call.', None, -1, -2146820336), None)
を取得することは、Pythonのコードです。問題は、このブロックのデータ型の最後の行、誰もが、これはPythonでスクリプトとして実行している作業の理由が、それがコンパイルされていないときに役立ちます
import win32com.client
import pythoncom
import time
import datetime
import os
import string
class ProcessDMSData:
sleepTime = 3600
ref_date = ''
def set_ref_date(self,ref_date):
self.ref_date = ref_date
def run(self):
run_type = ""
while True:
pythoncom.CoInitialize()
check_values = ["L", "D", "X"]
while run_type.upper() not in check_values:
run_type = raw_input ("Run Live or Development Import (L = Live, D = Dev, X = Exit):")
if run_type.upper() == "L":
update_type = "Live"
database_path = "G:\\Eurofighter programme Management\\1.PM Reporting\\Production Tracking Database\\booking_planeset_tracker_data.mdb"
elif run_type.upper() == "D":
update_type = "Development"
database_path = "G:\\Eurofighter programme Management\\1.PM Reporting\\Production Tracking Database\\dev_dms_tracker_data.mdb"
elif run_type.upper() == "X":
quit()
print "%s Opening %s Database..." % (self.get_date_time(), update_type)
conn=win32com.client.Dispatch('Access.Application')
try:
conn.OpenCurrentDatabase(database_path)
except:
print "%s Assuming Database already open" % (self.get_date_time())
pass
print "%s Importing latest DMS Data..." % (self.get_date_time())
datatype = conn.run("import_data")
= conn.run(「インポートデータ」)でありますEXE。樹里ロビからのアドバイスに従い
おかげで サイモン
pyinstallerのような別のexe-packerを使ってみましたか? –
Juri Robiからアドバイスを受けて、私はPyinstallerをダウンロードし、exeをコンパイルしました。これはどんな調整をしてもうまくいった。 py2exeがなぜ機能しなかったのかまだ分かりませんが、私にとってはPyinstallerは私にとって素晴らしいツールです。 Simon – PrestonDocks