环境
安装
Python 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块,安装 PyInstaller 模块与安装其他 Python 模块一样,使用 pip 命令安装即可。
pip install pyinstaller 或者 pip3 install pyinstaller
python3 -m pip install pyinstaller # 安装方式有很多种,相对而言,这种是最方便、最快捷的安装方式。 |
建议使用 pip 在线安装的方式来安装 PyInstaller 模块,不要使用离线包的方式来安装,因为 PyInstaller 模块还依赖其他模块,pip 在安装 PyInstaller 模块时会先安装它的依赖模块。
运行上面命令,应该看到如下输出结果:
Successfully installed pyinstaller-x.x.x # 其中的 x.x.x 代表 PyInstaller 的版本 |
验证是否安装成功
使用方法
PyInstaller 不仅支持 -F、-D 选项,而且也支持如表 1 所示的常用选项:
表 1 PyInstaller 支持的常用选项 |
-h,--help | 查看该模块的帮助信息 |
---|
-F,-onefile | 产生单个的可执行文件 |
-D,--onedir | 产生一个目录(包含多个文件)作为可执行程序 |
-a,--ascii | 不包含 Unicode 字符集支持 |
-d,--debug | 产生 debug 版本的可执行文件 |
-w,--windowed,--noconsolc | 指定程序运行时不显示命令行窗口(仅对 Windows 有效) |
-c,--nowindowed,--console | 指定使用命令行窗口运行程序(仅对 Windows 有效) |
-o DIR,--out=DIR | 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件 |
-p DIR,--path=DIR | 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径 |
-n NAME,--name=NAME | 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 |
打包程序
touch test.py
vim test.py
print("hello world") |
cd dist # 进入dist文件夹
./test # 执行可执行程序,正常来说,会输出hello world |
注意:走到这儿,代表你的python程序就可以完整的打包成功了,因为测试文件很简单,没有第三方库。如果有第三方模块,在打包好之后,执行的时候,可能会报错,此时需要第三方模块的路径,根据后续步骤,即可解决。
查看第三方库的目录路径
python3 -m pip show pyroute2 # 查看pyroute2的目录路径 |
删除之前打包好的所有相关文件,然后重新打包
pyinstaller -F set_network_impairment.py -p /home/agora/anaconda3/lib/python3.7/site-packages
最新命令:
pyinstaller -p /home/agora/anaconda3/lib/python3.7/site-packages/prettytable --hidden-import external_imp -F ./set_network_impairment.py |
打包好之后,进入dist目录 执行
./set_network_impairment --ip_local 192.168.3.148 --ul_loss 30 |
方法一:./set_network_impairment --ip_local 192.168.3.148 --show # 这个会报很奇怪的错误,可以不用管(暂时没研究),但是弱网确实是生效的
方法二:ping www.baidu.com # 在该ip的设备端,通过ping百度,来查看是否生效 ping www.baidu.com |
具体的,pyinstaller的使用方法可参考官方文档:https://pyinstaller.readthedocs.io/en/latest/