完美解决Pyinstaller 打包exe 出现PermissionError: [Errno 13] Permission denie 问题

完美解决Pyinstaller 打包exe 出现PermissionError: [Errno 13] Permission denie 问题使用Pyinstall-f-w打包文件时,最后出现PermissionError:[Errno13]Permissiondenie问题

使用Pyinstall -f -w 打包文件时,最后出现PermissionError: [Errno 13] Permission denie 问题。截图如下:

完美解决Pyinstaller 打包exe 出现PermissionError: [Errno 13] Permission denie 问题

问题分析:

1、 问题提示:

        在文件 “F:\myPythonProject\venv\lib\site-packages\PyInstaller\utils\win32\winutils.py”, 第178行, 调用 with open(exe_path, ‘wb’) as fp打开文件时,发现文件被占用PermissionError: [Errno 13] Permission denied:

2、解决思路:关闭被占用的文件即可。

3、解决方法:

(1)撰写函数。如果文件被占用,则关闭文件句柄。

import win32file
def file_occupied(file_name): # occupied:占用
    # 自己加的模块,防止出现错误:PermissionError: [Errno 13] Permission denied:exe_path
    # 如果检测到文件被占用,则关闭该文件句柄
    try:
        fp = open(file_name,'wb')
    except:
        vHandle = win32file.CreateFile(file_name, win32file.GENERIC_READ, 0, None,win32file.OPEN_EXISTING,win32file.FILE_ATTRIBUTE_NORMAL, None)
        win32file.CloseHandle(vHandle)
    else:fp.close()

(2)打开并编辑F:\myPythonProject\venv\lib\site-packages\PyInstaller\utils\win32\winutils.py文件,添加file_occupied()函数

(3)文件中查找“with open(exe_path, ‘wb’) as fp:”语句,在每个语句之前调用函数:

file_occupied(exe_path)。如下图:
    # Rewrite the exe
    file_occupied(exe_path)
    with open(exe_path, 'wb') as fp:
        fp.write(data)

(4)保存文件,重新运行打包命令。

完美解决Pyinstaller 打包exe 出现PermissionError: [Errno 13] Permission denie 问题

 (5)至此,完美解决 PermissionError: [Errno 13] Permission denie 问题

今天的文章完美解决Pyinstaller 打包exe 出现PermissionError: [Errno 13] Permission denie 问题分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87002.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注