《Nuitka打包实战指南》实战打包Matplotlib

实战打包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()

运行截图如下:

《Nuitka打包实战指南》实战打包Matplotlib

打包分析如下:

  1. matplotlib是一个相对来说比较大的第三方库,所以第一想法就是用--nofollow-imports命令来禁止打包所有引入的库,否则担心打包时间将会非常长。
  2. 既然使用了--nofollow-imports,那么matplotlib是不会自动被添加到hello.dist文件夹中的,当然我们可以在打包之后手动复制进去。第一次打包我们先用这种方法。
  3. 也可以先去Python安装路径下的site-packages文件夹中把matplotlib这个库复制到项目目录下,然后用--include-data-dir打包进去。

打包命令如下:

nuitka --standalone --nofollow-imports hello.py

打包结束后,运行hello.exe文件,发现闪退。于是将hello.exe文件拖入命令行窗口中回车运行:

《Nuitka打包实战指南》实战打包Matplotlib

按照提示我们去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

复制过去之后,再次运行程序,报了以下错误:

《Nuitka打包实战指南》实战打包Matplotlib

这个错误我们很熟悉,解决方法就是启用tk-inter插件。修改打包命令如下:

nuitka --standalone --nofollow-imports --enable-plugin=tk-inter hello.py

打包结束后再把上面的库和模块复制到hello.dist文件夹中。

《Nuitka打包实战指南》实战打包Matplotlib

此时再运行就正常了:

《Nuitka打包实战指南》实战打包Matplotlib

确认打包的程序没问题后,使用--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

上一篇:Error This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, se


下一篇:【精彩活动回顾】个性化推荐系统开发指南