[英]cx_freeze ImportError when executing file
該程序旨在捕獲用戶前景窗口的標題欄,並將該標題以及日期時間附加到日志文件中。
當我在計算機上運行此代碼時,它可以工作,但是當我在另一台計算機上運行可執行文件時,出現以下錯誤:
Python檔案:
from win32gui import GetForegroundWindow, GetWindowText
from datetime import datetime
from time import sleep
from os.path import join
log_path = r'C:\Office Viewer\OV_Log.txt'
while True:
window_name = GetWindowText(GetForegroundWindow())
current_time = datetime.strftime(datetime.now(), '%Y/%m/%d_%H:%M:%S, ')
txt = join('\n',current_time, window_name)
with open(log_path, 'a') as log_file:
log_file.write(txt)
sleep(5)
setup.py:
import sys
from cx_Freeze import setup, Executable
base = None
if (sys.platform == "win32"):
base = "Win32GUI"
#build_exe_options = {'include_files': ['re']}
build_exe_options = {"packages": ["re"]}
setup( name = "Foreground Window Montior",
version = "0.1",
description = "Query the foreground window.",
options = {'build_exe': build_exe_options},
executables = [Executable("actWin_Query.py", base=base)])
錯誤是:
有人可以建議我解決該問題需要做什么嗎?
問題似乎是另一台計算機上不存在C:\\ Python33 \\等。 如何使程序完全依賴於.exe所在的目錄?
啊,打包用於Windows的獨立Python應用程序的樂趣! 任何告訴您這很容易的人都沒有嘗試過。 但是請不要放棄,如果您能夠克服最初的仰卧起坐的情況,那么結果通常是值得的。
凍結的可執行文件的錯誤消息中發出的路徑很可能是紅色鯡魚,您可以放心忽略。 看來您的應用程序(間接地)插入了一個cx_Freeze
不會自動包含的cx_Freeze
,並且在目標計算機上不可用。 確切地找出缺少哪個 DLL是棘手的部分。
我親自嘗試運行您在Windows 7計算機上發布的setup.py
來生成EXE和Python腳本的支持文件。 然后,我將捆綁軟件復制到Windows XP盒中。 不幸的是,它對我來說還不錯 ,所以我只能給您一般的故障排除建議。 這是我嘗試的方法:
cx_Freeze
生成的actWin_Query.exe
二進制文件。 cx_Freeze
include-files
選項引入缺少的DLL。 抱歉,我無法提供更多具體建議。 Windows / Python的組合可能太多,再加上32位/ 64位和C運行時變體,很難找出確切的原因。 但是我至少遇到過十二次類似的問題,而且似乎總是歸結為丟失的文件。
我最常遇到的情況是:我將在恰好安裝了Visual C ++ 2010 [Express]的計算機上構建應用程序,然后發現它無法在沒有 VC +的計算機上運行+2010已安裝。 在目標上安裝VC ++ 2010 Redistributable通常可以解決該問題,或者將其安裝捆綁到“超級安裝程序”中,該安裝程序還會同時安裝cx_Freeze
生成的文件。 (我懷疑您看到的問題與此略有不同,只是在提及它時才對您有所幫助。)祝您好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.