Anaconda3+PyInstaller+Win10Toast=不工作

2024-10-01 04:44:20 发布

您现在位置:Python中文网/ 问答频道 /正文

同时,我开始学习多语言课程,现在我正在用初学者项目练习Python。我已经做了一个小的桌面通知程序项目,我想把它变成一个.exe。我用Anaconda3,我用Spyder4写代码

当我试图用它生成一个exe时,不管我怎么做,它都不会编译一个.exe文件,在编译过程中发生了一些错误,它会停止。生成文件夹和.spec文件正常,但dist文件夹仍为空

以下是我编写的应用程序代码:

import time
from win10toast import ToastNotifier

notTime = input("Enter the desired time of notification (HH:MM:SS, 24-hr): ")
notMsg = input("Enter your message: ")
while True:
    timeCur = time.strftime("%H:%M:%S")
    if timeCur == notTime:
        print(timeCur)
        break
    
notify = ToastNotifier()
notify.show_toast("Notification",notMsg)

编译日志显示两个重要错误,第一个错误: 导入numpy C扩展失败。此错误可能发生在以下情况: 原因很多,通常是由于您的设置或NumPy的使用方式问题 安装

我们在以下网站上汇编了一些常见原因和故障排除提示:

https://numpy.org/devdocs/user/troubleshooting-importerror.html

请注意并检查以下内容:

  • Python版本是:Python3.8,来自“c:\users\kuzgu\anaconda3\Python.exe”
  • NumPy版本是:“1.20.1”

并确保它们是您期望的版本。 请仔细阅读上面链接的文档以获得进一步帮助

原始错误是:导入_multiarray_umath时DLL加载失败

第二个:

AssertionError:无法确定matplotlib的数据目录

为了给伤口加点盐,PyInstaller本身实际上使用了更基本的脚本,而这些脚本不导入任何内容,就像我在本课程Python部分所做的演示一样。我想win10toast部分会造成问题,但我不确定

我如何解决这个问题


Tags: 文件项目import版本文件夹inputtime错误
1条回答
网友
1楼 · 发布于 2024-10-01 04:44:20

我使用python 3.8和Spyder 4.1.4

节目:

我修改了你的程序:

import time
from win10toast import ToastNotifier
import six
import appdirs
import packaging.requirements

notTime = input("Enter the desired time of notification (HH:MM:SS, 24-hr): ")
notMsg = input("Enter your message: ")
while True:
    timeCur = time.strftime("%H:%M:%S")
    if timeCur == notTime:
        print(timeCur)
        break
    
notify = ToastNotifier()
notify.show_toast("Notification",notMsg,duration=10,icon_path="notif.ico")

我添加了三个模块:sixappdirspackaging.requirements。此模块帮助您使用exe。 我还添加了10秒的持续时间,即通知的显示时间和图标路径。图标应位于exe或脚本所在的文件夹中

Exe:

要创建exe,可以使用多种解决方案:

  • pyinstaller
  • py2exe
  • 自动复制到exe

您可以使用auto py to exe,因为生成exe很容易处理。 auto py to exe应用程序使用pyinstaller库,您可以配置所有内容。这是一个web应用程序,您可以在Current Command部分看到pyinstaller命令

当我第一次创建exe时,发现了几个错误,就像你一样。 在创建exe期间,如果错误来自模块或库,则可以在Advanced部分使用 exclude-module将其排除。 我排除了PyQt5库,因为该库产生了问题

下面是由auto py to exe应用程序创建的pyinstaller命令:

pyinstaller  noconfirm  onedir  console  exclude-module "PyQt5"  add-data "C:/PATH/notif.ico;."  "C:/PATH/kuzgun_notif.py"

您需要在通知中添加一个图标。您应在additionals files部分添加图标文件

你不是唯一有这个问题的人。 我用这个页面来帮助我

相关问题 更多 >