【问题标题】:WARNING: Hidden import "pygame._view" not found警告:未找到隐藏的导入“pygame._view”
【发布时间】:2019-09-07 20:47:35
【问题描述】:

本质上,我正在尝试将一个显示大量鼠标信息的简单程序转换为一个窗口,就像一个辅助项目一样。我已经尝试了人们拥有的几乎所有解决方案,但没有任何效果。我正在使用 pyinstaller 和 python-to-exe。

尝试更改文件目录、pyinstaller 中的每个选项以及更改循环函数。

import pyautogui
from pygame import *
import time
import keyboard
import logging
import datetime

logging.basicConfig(filename="mouse_log.log", filemode="w",
                    format='%(message)s', level=logging.DEBUG)

pygame.init()
pygame.font.init()

screen = pygame.display.set_mode((250, 95))
pygame.display.set_caption("Cursor Info")
font = pygame.font.SysFont("Arial", 15)
title_font = pygame.font.SysFont("Arial", 16)
icon = pygame.image.load("MouseController.png").convert_alpha()
pygame.display.set_icon(icon)


def main():
    previous_pos = pyautogui.position()
    running = True
    while running:

        mx, my = pyautogui.position()
        current_pos = mx, my
        msx = current_pos[0] - previous_pos[0]
        msy = current_pos[1] - previous_pos[1]
        mouse_color = pyautogui.pixel(mx, my)
        if msx == 0 and msy == 0:
            moving = False
        else:
            moving = True

        cords = font.render("Position:  x = {}, y = {}".format(mx, my), False, (0, 0, 0))
        color = font.render("Current Color:  {}".format(mouse_color), False, (0, 0, 0))
        is_moving = font.render("Currently Moving:  {}".format(str(moving)), False, (0, 0, 0))
        speed = font.render("Speed:  x = {}, y = {}".format(msx, msy), False, (0, 0, 0))
        log = title_font.render("Press Alt+C to log all aspects", True, (0, 0, 0))

        pygame.display.flip()
        pygame.Surface.fill(screen, (255, 255, 255))

        screen.blit(cords, (5, 0))
        screen.blit(color, (5, 15))
        pygame.draw.rect(screen, (0, 0, 0), (211, 13, 30, 22))
        pygame.draw.rect(screen, (0, 0, 0), (211, 13, 31, 23))
        pygame.draw.rect(screen, mouse_color, (212, 14, 28, 20))
        screen.blit(is_moving, (5, 30))
        screen.blit(speed, (5, 45))
        screen.blit(log, (20, 75))
        previous_pos = current_pos

        if keyboard.is_pressed('C') and keyboard.is_pressed('Alt'):
            logging.debug("TIME:  {}".format(datetime.datetime.now().time()))
            logging.debug("POSITION:  x = {}, y = {}".format(mx, my))
            logging.debug("COLOR:  {}".format(mouse_color))
            logging.debug("MOVING:  {}".format(str(moving)))
            logging.debug("SPEED:  x = {}, y = {}".format(msx, msy))
            logging.debug("=========")

            time.sleep(0.2)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
                pygame.quit()


if __name__ == "__main__":
    main()

在每种情况下,exe 文件的输出都是因为严重错误而无法运行,并且无法运行脚本。我不知道发生了什么,请帮忙!

【问题讨论】:

  • 我不知道您遇到的错误,因为没有发布错误消息。也许你会让你的程序更简单,然后先用 python 测试它。只有成功的resukts然后你编译为exe。然后确保 exe 文件仍然可以工作。然后用更多功能修改您的程序并再次重复该过程。希望这会指导你。
  • 更新:我查看了给出的日志文件,发现这一行missing module named pyautogui。现在我知道 pyautogui 没有导入,但我不知道如何修复它。谢谢
  • 你可以打开一个 python shell 并运行import pyautogui。如果不成功,请尝试安装它。如果您在 Linux 中运行 python 3,请执行此操作pip3 install pyautogui。否则只需通过pip install pyautogui 安装
  • 好的,我现在都做了,但是当我运行import pyautogui 时它仍然说它不存在。我会继续努力
  • 然后安装它。见pyautogui.readthedocs.io/en/latest/install.html。另一个原因是您使用一个 python 版本安装 pyautogui,但使用另一个版本运行您的脚本。您可以按照说明查看您的 python 正在寻找库的路径:dummies.com/programming/python/…

标签: python pygame exe


【解决方案1】:

对于任何想知道的人来说,这是解决方案:

1. 我做的第一件事是从命令提示符运行 python 文件,在它所在的文件夹中使用python {script name}.py。我发现我没有在我的机器上安装默认情况下在我的 IDE (PyCharm) 上的模块,结果是keyboard 模块。确保其正确安装并且应该可以正常工作。

2。 (非常重要) 检查 python 的多个安装。正如我后来发现的那样,某些模块(例如pyautogui)无法正常工作的原因是因为它们默认安装到我也安装在我的系统上的不同版本的 python 中。在我的例子中,pyautogui 被自动安装到 Python 版本 3.6.4 而不是 3.7.3,所有其他模块都在运行。只需删除您不使用的python版本并重新安装软件包即可。

3. 除非您有脚本的一部分来说明缺少它,否则如果您的脚本包含任何类型的图像(不包括图标图像)或任何其他导入的文件,它们必须与代码中指定的位置相同,否则将不起作用。如果你正在做一个基于窗口的程序,窗口会弹出,显示为黑色,然后会出现一个致命的错误消息。只要所有图像和外部媒体都可以访问,就不应该出现图形错误。

4. (故障排除) 显然,您从运行 .exe 文件中得到的 FATAL ERROR 消息对于尝试解决任何问题是没有用的,但是如果您使用pyinstaller 构建它应该创建一个 __pycache__ 文件夹,其中包含一个更友好的 .pyc 文件,该文件实际上会给您错误和代码出错的事情。如果这里没有任何效果,请尝试此操作。

【讨论】:

    猜你喜欢
    • 2020-10-24
    • 2019-11-24
    • 2017-09-12
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2023-03-13
    • 2012-03-11
    相关资源
    最近更新 更多