python-3.x - 无法使用 pyinstaller 执行脚本 py 到 exe
问题描述
我阅读了 10 多个相关主题,但没有一个对我有解决方案。
我包含以下模块:
import sys
import os
import cv2
import xlsxwriter
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
from tkinter.messagebox import showinfo
并尝试了几种方法:
- pyinstaller.exe -F --onefile --windowed --hidden-import "cv2" --icon=arc.ico tkinter_popup.py (它会打开一个控制台,但我的系统会因为恶意而自动删除它
- pyinstaller.exe --onefile --icon=arc.ico tkinter_popup.py(致命错误 - 无法访问脚本)
- pyinstaller.exe --icon=arc.ico tkinter_popup.py(致命错误 - 无法访问脚本)
它是否可以作为单个文件夹或单个文件工作并不重要。我更喜欢单个文件输出,但如果不可能,单个文件夹也可以。
我尝试使用 3.8.5 和 3.7。
有任何想法吗?
解决方案
我个人对这些错误所做的,是在logging
发生致命错误时使用 python 模块生成一个日志文件,这样我就知道会发生什么。然后以后调试起来就容易多了
您应该做的是将整个脚本包装在 try/except 块中,其中将异常写入日志文件
类似于以下几行的内容(仅在发生错误时创建日志文件)
import logging
lh = logging.FileHandler(filename='mf_timer.log', mode='w', delay=True)
logging.basicConfig(handlers=[lh],
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.WARNING)
try:
<enter your main script here (including imports)>
except Exception as e:
logging.exception(e)
raise e
将此添加到您的代码中,然后重新创建可执行文件并运行它。您现在应该得到一个显示错误的日志文件
推荐阅读
- nginx - POST 响应缓存在 nginx 中不起作用
- r - 如何重新排列列表中的对象
- java - 从 CronScheduledRoutePolicy 调用路由后,如何让 Camel FTP 仅轮询一次文件
- c# - 动态构造插入语句
- java - 使用 Gradle 时获取 Spring Boot 源代码
- bbedit - 在 BBEdit 中,如何搜索一个模式,然后复制使用该模式找到的所有行?
- web-crawler - Apache Nutch 未抓取内链接中的所有网站
- c++ - 使用多个逻辑非运算符评估条件时的困惑
- java - 如何使用使用 maven 依赖系统编译的外部 jar 运行 spring-boot jar?
- dart - 如何从飞镖中的另一个类访问一个类方法?