为啥我的代码在传递给 .exe 时不起作用?

Posted

技术标签:

【中文标题】为啥我的代码在传递给 .exe 时不起作用?【英文标题】:Why my code don't work when I pass it to .exe?为什么我的代码在传递给 .exe 时不起作用? 【发布时间】:2021-12-16 09:56:25 【问题描述】:

我制作了一个检测屏幕上图像的程序,我使用了 pyautogui 库,当我运行我的程序时它工作得很好,但是当我将它传递给可执行文件时,它不再工作了,我有错误信息如下。

我在 windows 10 下。我有 python 3.10 和 pyinstaller 5.0

错误信息:

Traceback (most recent call last):
  File "interface.py", line 21, in <module>
    ScreenLocation = pa.locateOnScreen('module\images\location.PNG', confidence=0.7)
  File "pyautogui\__init__.py", line 175, in wrapper
  File "pyautogui\__init__.py", line 213, in locateOnScreen
  File "pyscreeze\__init__.py", line 373, in locateOnScreen
  File "pyscreeze\__init__.py", line 353, in locate
  File "pyscreeze\__init__.py", line 253, in _locateAll_python
NotImplementedError: The confidence keyword argument is only available if OpenCV is installed.

我希望我已经足够清楚了,如果有任何信息缺失可以解决我的问题,请随时向我提问,感谢您抽出时间为我服务,希望我们能找到解决方案。

【问题讨论】:

你读过错误吗?您需要修改 pyinstaller 脚本以强制包含 OpenCV。 正如错误所说:您在调用pa.locateOnScreen 时使用confidence=0.7,但正如docs 所说,您需要安装OpenCV 才能使confidence 关键字工作。 如何强制 pyinstaller 包含 opencv ? 我用 pip install opencv-python 在 python 中安装 opencv,是不是方法不对? 我试图删除 confidence=0.7 但现在应用程序找不到图像。 【参考方案1】:

Pip 安装 OpenCV 并在脚本中导入 OpenCV。

【讨论】:

我已经用 pip install opencv-pyton 安装了 opencv 并在你的脚本中导入OpenCV为import cv2,这样你就可以使用置信度阈值了吗? 是的,我试过了,但又收到一条错误消息 回溯(最近一次调用最后一次):文件“somthing.py”,第 1 行,在 中 import cv2 文件“PyInstaller\loader\pyimod03_importers.py”,第 495 行,在 exec_module 文件中cv2_init_.py”,第 180 行,在 文件“cv2_init_.py”,第 110 行,在引导文件“cv2_init_”中>.py",第 108 行,在 load_first_config ImportError 中:OpenCV 加载程序:缺少配置文件:['config.py']。检查 OpenCV 安装。 @Daza 这是 opencv 4.5.4 和 pyisntaller 之间的已知错误。 github.com/pyinstaller/pyinstaller-hooks-contrib/issues/110 。标题具有误导性,这不仅适用于“从源代码构建”。它发生在 opencv 4.5.4 的打包版本中。你可以将你的 python 降级到 3.9 并使用以前版本的 opencv。

以上是关于为啥我的代码在传递给 .exe 时不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的函数在调用时不起作用? [关闭]

为啥我的 Google Maps API 请求在服务器上运行时不起作用

为啥 Desktop.Open() 在安装 MagicISO 时不起作用

为啥我的 UITapGestureRecognizer 在我将它附加到我的 UITableViewCell 中的元素时不起作用?

为啥背景过渡:linear-gradient() 在悬停时不起作用?

ios json在使用include()时不起作用