向无Python基础用户分享脚本:最优方案咨询及PyInstaller报错求助
Python脚本分享方案与PyInstaller错误修复指南
嗨,我来帮你一步步解决这些问题——毕竟给小白分享Python脚本和PyInstaller踩坑都是日常操作了 😊
一、给不懂Python的终端用户分享脚本:最优方案推荐
首先明确:优先选择打包成EXE文件,这是对小白最友好的方式——用户不需要安装任何东西,双击就能运行,完全不用接触代码或命令行。唯一的小缺点是EXE文件体积可能偏大,但对普通用户来说这点完全可以忽略。
如果因为某些特殊原因没法打包成EXE(比如脚本依赖了PyInstaller不兼容的库),再考虑带虚拟环境的压缩包,但这个方案步骤多,用户操作门槛高,只能作为备选。
虚拟环境分享的操作步骤(备选方案)
如果你要走这条路,按下面的步骤来:
- 创建并激活虚拟环境:
# 创建虚拟环境 python -m venv script_env # Windows激活 script_env\Scripts\activate # Linux/macOS激活 source script_env/bin/activate - 安装脚本所需的所有依赖,然后导出依赖清单:
pip install 你的依赖包名 pip freeze > requirements.txt - 把虚拟环境文件夹
script_env、你的脚本文件、requirements.txt一起打包成压缩包发给用户。 - 给用户写清楚操作说明:
- 解压压缩包到任意文件夹
- 打开命令提示符/终端,进入解压后的文件夹
- 运行激活虚拟环境的命令(Windows:
script_env\Scripts\activate;Linux/macOS:source script_env/bin/activate) - 输入
python 你的脚本文件名.py运行脚本
二、PyInstaller打包出现version.json not found wcwidth的解决办法
这个错误是因为PyInstaller默认没把wcwidth库的version.json文件打包进去,导致运行时找不到。我之前也碰到过,按下面的方法就能解决:
方法1:打包命令中手动添加wcwidth资源
先找到wcwidth的安装路径:
pip show wcwidth输出里的
Location字段就是它的安装目录,比如C:\Users\XXX\AppData\Local\Programs\Python\Python310\Lib\site-packages\wcwidth修改PyInstaller打包命令,用
--add-data参数把整个wcwidth目录包含进去:- Windows系统(注意用分号分隔路径):
pyinstaller --add-data "C:\Users\XXX\AppData\Local\Programs\Python\Python310\Lib\site-packages\wcwidth;wcwidth" 你的脚本.py - Linux/macOS系统(用冒号分隔路径):
pyinstaller --add-data "/usr/local/lib/python3.10/site-packages/wcwidth:wcwidth" 你的脚本.py
- Windows系统(注意用分号分隔路径):
方法2:通过.spec文件配置(更稳定)
如果命令行参数太麻烦,用spec文件更可控:
- 先生成默认的spec文件:
pyinstaller 你的脚本.py - 打开生成的
你的脚本.spec文件,找到datas列表,添加一行:
比如Windows下就是:datas=[('刚才找到的wcwidth路径', 'wcwidth')],datas=[('C:\\Users\\XXX\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages\\wcwidth', 'wcwidth')], - 用spec文件重新打包:
pyinstaller 你的脚本.spec
额外排查步骤
如果还是不行,先升级PyInstaller和wcwidth到最新版:
pip install --upgrade pyinstaller wcwidth
然后再重新打包试试。
内容的提问来源于stack exchange,提问作者Koushik Padmanaban
相关产品推荐
相关产品推荐

