我与岁月的森林 2022-09-16 16:39 采纳率: 0%
浏览 44

【Python】PyInstaller打包Python后放至桌面上无法运行的问题

开发环境

操作系统:Windows10
开发工具:PyCharm
Python版本:3.9

问题描述

当我用Pyinstaller将Python文件打包为.exe文件后,打包好的文件夹包括build、dist、spec,我将三者放置在目录Test中,然后将Test文件夹移动至桌面上,点击运行dist目录下的exe文件,发生了错误,具体错误请看下面。

具体报错代码
    # 给将要打包的Tk()设置Ico
    def IcoSetToTk(self, p_tk, p_icoName):
        # 获得生成的ico文件的绝对路径
        v_icoName = p_icoName.replace('.ico', '') + '.ico'
        execPath = os.path.dirname(sys.executable)
        path_1 = execPath + "\\" + v_icoName
        path_1 = path_1.replace("\\", "/")
        # 判断路径下ico文件是否存在
        if os.path.exists(path_1):
            # 对路径进行转码和解码操作
            path_1 = path_1.encode("utf-8")
            path_1 = path_1.decode("utf-8", "strict")
            # 录入日志信息
            self.__log.InLog(path_1)
            # 设置Tk()的窗口图标,报错的就是下面这一行
            p_tk.iconbitmap(default=path_1)
            os.remove(path_1)
        else:
            tm.showwarning('Warning', '二进制解码生成的ico文件不存在!')
运行结果及报错内容

img


在桌面上运行后出现上示截图的错误,错误猜测如下:
1.在错误提示的路径下存在该文件

img


我有三个猜测:
(1)第一可能是路径访问权限导致的,我尝试了Python访问UAC控制权限的方法,但是网络上的教程已经不适用了,Python3.9中ctypes.windll.shell32.IsUserAnAdmin()以及ShellExcuteW()方法似乎无法使用,亦或者我还未学会如何使用;
(2)第二是资源访问冲突的问题,在根据路径读取ico文件之前我通过一个方法来创建了ico文件,但是可能存在还未创建成功之前进行访问的情况,所以我打算通过线程来验证一下(经验证该猜测Pass);
(3)第三可能是资源创建后保留在资源缓冲区,未及时写入磁盘,或许我应该在创建ico文件后执行立即写入磁盘的方法(经验证该猜测Pass)。

尝试过的方法

1.在D盘路径下可以正常运行

img


2.在C盘非Desktop路径下可以正常运行

img

我想要达到的结果

我希望用户将文件解压至Desktop上也可以正常运行

  • 写回答

3条回答 默认 最新

  • 不会翻墙的泰隆 2022-09-16 17:20
    关注

    自信点,路径问题,直接移动桌面运行是肯定报错的,你打包时路径已经固定,不会根据你移动而改变,你试试在桌面下重新打包吧!

    评论

报告相同问题?

问题事件

  • 修改了问题 9月16日
  • 修改了问题 9月16日
  • 修改了问题 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥15 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?