将Python脚本转为exe后控制台闪退报错,如何解决?
解决Python打包exe后Yandex.Disk上传报错问题
问题描述
该代码在IDLE中运行正常,可将文件上传至Yandex.Disk,但转换为.exe文件后,启动控制台立即出现报错:“Traceback (most recent call last): File"yadisk\client.py", line 227”。已尝试重新安装yadisk模块但无效,请问该如何解决?
相关代码
import yadisk import os from datetime import datetime y = yadisk.YaDisk(token="TOKEN") def run(path): date = datetime.strftime(datetime.now(), "%d.%m.%Y-%H.%M.%S") y.mkdir(f'/test/{date}') for address, dirs, files in os.walk(path): for dir in dirs: y.mkdir(f'/test/{date}/{dir}') print(f'Papka {dir} created') for file in files: print(f'File {file} downloaded') y.upload(f'{address}/{file}', f'/test/{date}/{file}') print("DONE") if __name__ == '__main__': run(r'C:\Users\user.DESKTOP-IV3GN0E\Desktop')
解决方法
- 完善打包工具参数:若使用PyInstaller,添加
--hidden-import=yadisk确保依赖被正确打包,命令示例:pyinstaller --onefile --hidden-import=yadisk your_script.py - 捕获完整报错信息:修改代码添加异常捕获,获取完整堆栈信息以定位问题:
重新打包后运行,根据完整错误信息针对性处理(如网络权限、文件路径、依赖缺失等)。if __name__ == '__main__': try: run(r'C:\Users\user.DESKTOP-IV3GN0E\Desktop') except Exception as e: import traceback traceback.print_exc() input("Press Enter to exit...") - 手动添加依赖文件:若yadisk存在未被自动打包的配置或动态库,用
--add-data参数手动引入,Windows下命令示例:pyinstaller --onefile --add-data "C:\PythonXX\Lib\site-packages\yadisk;yadisk" your_script.py
(替换C:\PythonXX为你的Python安装路径) - 切换打包工具:尝试使用cx_Freeze或Nuitka等其他打包工具,不同工具的打包逻辑可能规避该问题。
内容的提问来源于stack exchange,提问作者Amir Samatov
相关产品推荐
相关产品推荐

