实战打包Matplotlib
打包示例源码:
请看文章末尾
版本信息:
matplotlib==3.4.3
Nuitka==0.6.19.1
打包系统:
Windows10 64位
打包前先运行以下程序,确保没有问题:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()
运行截图如下:
打包分析如下:
- matplotlib是一个相对来说比较大的第三方库,所以第一想法就是用--nofollow-imports命令来禁止打包所有引入的库,否则担心打包时间将会非常长。
- 既然使用了--nofollow-imports,那么matplotlib是不会自动被添加到hello.dist文件夹中的,当然我们可以在打包之后手动复制进去。第一次打包我们先用这种方法。
- 也可以先去Python安装路径下的site-packages文件夹中把matplotlib这个库复制到项目目录下,然后用--include-data-dir打包进去。
打包命令如下:
nuitka --standalone --nofollow-imports hello.py
打包结束后,运行hello.exe文件,发现闪退。于是将hello.exe文件拖入命令行窗口中回车运行:
按照提示我们去Python安装路径下的site-packages文件夹下复制matplotlib库到hello.dist文件夹中。继续运行hello.exe后发现还差numpy库,于是把numpy也复制过去。针对该打包程序,笔者一共复制了以下库或模块:
- matplotlib
- numpy
- PIL
- dateutil
- mpl_toolkits
- six.py
- pyparsing.py
- cycler.py
- kiwisolver.cp37-win_amd64.pyd
复制过去之后,再次运行程序,报了以下错误:
这个错误我们很熟悉,解决方法就是启用tk-inter插件。修改打包命令如下:
nuitka --standalone --nofollow-imports --enable-plugin=tk-inter hello.py
打包结束后再把上面的库和模块复制到hello.dist文件夹中。
此时再运行就正常了:
确认打包的程序没问题后,使用--windows-disable-console命令去掉黑框,修改打包命令如下:
nuitka --standalone --windows-disable-console --nofollow-imports --enable-plugin=tk-inter hello.py
打包示例源码下载:
链接:https://pan.baidu.com/s/1W9wakQp-r_6VwMtu0FhZ_w
提取码:asyl