python - cx_freeze 执行文件时出现导入错误

标签 python python-3.x importerror cx-freeze

该程序旨在捕获用户前台窗口的标题栏,并将该标题与日期时间一起附加到日志文件中。

当我在我的计算机上运行此代码时,它可以工作,但是当我在另一台计算机上运行可执行文件时,我收到错误,如下所示:

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)

设置.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)])

错误是:

enter image description here

有人可以建议我需要做什么来解决这个问题吗?

问题似乎是 C:\Python33\等...在另一台计算机上不存在。如何使程序完全依赖于 .exe 所在的目录?

最佳答案

啊,为 Windows 打包独立的 Python 应用程序的乐趣!任何告诉您这简单的人都没有尝试过。但不要放弃,如果您能克服最初的仰卧起坐,结果通常是值得的。

卡住的可执行文件的错误消息中发出的路径很可能是转移注意力的内容,您可以放心地忽略。您的应用程序似乎(间接)引入了 cx_Freeze 未自动包含的 DLL,并且在目标计算机上不可用。准确找出缺少哪个 DLL 是棘手的部分。

我个人尝试在 Windows 7 计算机上运行您发布的 setup.py 来为您的 Python 脚本生成 EXE 和支持文件。然后我将 bundle 复制到 Windows XP 盒子中。不幸的是,它对我来说运行得很好,所以我只能为您提供一般的故障排除建议。这是我会尝试的:

  1. 下载 Dependency Walker到目标计算机并打开 cx_Freeze 生成的 actWin_Query.exe 二进制文件。
  2. 尝试确定哪个 DLL 加载失败
  3. 返回构建计算机,使用 cx_Freeze include-files 选项引入缺少的 DLL
  4. 重建应用
  5. 尝试在目标上再次运行

抱歉,我无法提供比这更具体的建议。 Windows/Python 以及 32 位/64 位和 C 运行时变体的可能组合有很多,因此很难查明确切的原因。但我至少遇到过十几次类似的问题,而且似乎总是归结为丢失文件。

我最常遇到的情况是:我将在恰好安装了 Visual C++ 2010 [Express] 的计算机上构建应用程序,然后发现它无法在安装了 < em>没有安装VC++2010。安装VC++2010 Redistributable在目标上安装通常可以解决问题,或者将其安装捆绑到“ super 安装程序”中,该“ super 安装程序”也安装 cx_Freeze 生成的文件。 (我怀疑您遇到的问题与此略有不同,只是提及它以防有帮助。)祝您好运!

关于python - cx_freeze 执行文件时出现导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24553439/

相关文章:

python - 为什么此命令无法打印 Python 命令的正确退出代码?

python - 搜索嵌套列表并在Python错误中输出结果

python - 即使发生任何中断也可以写入文件

python-3.x - 如何在终端中使用 python 3.7.1 从我的桌面打开文本文件

python-3.x - 在 Visual Studio Code for Mac OS 中使用 Homebrew python3 和 homebrew 包和 pip/pip3 包

jar - jython 导入错误 : No module named

python - matplotlib 颜色 rgb_to_hsv 不能正常工作。也许需要报告?

python - 从 PyParsing 中的字符串中检索多个重叠匹配项

python - cx_freeze - 包括我自己的模块?

python - 尝试从其他应用程序导入模型时出现 Django 导入错误