一、前言

给朋友写一个excel脚本,引入了如下模块。

1
2
3
import pandas as pd
from pandas import DataFrame
import os

用 anaconda 的环境运行pyinstaller -F 打包单个exe之后的体积很大,达到了300多M。网络搜索如何缩小提及后。考虑使用docker

二、docker环境及容器环境配置

1、安装docker

我的腾讯云正好有安装好的docker,windows也可以安装,便不再赘述。

2、拉取镜像

1
docker pull cdrx/pyinstaller-windows

3、启动容器,以命令行进入

1
docker run -it -v /home/python/docker/:/home/ cdrx/pyinstaller-windows /bin/bash

/home/python/docker/:/home/ 这个参数是挂载我宿主机/home/python/docker/文件夹到容器的/home/文件夹,方便后续下载打包好的程序。

4、配置容器的python环境

在容器的命令行执行pip list发现,只有寥寥几个包。
因为我用到的pandas,所以直接 安装了如下几个

1
2
3
pip install pandas
pip install openpyxl
pip install xlsxwriter

打包,并无报错,执行报错

1
Missing optional dependency 'jinja2'. DataFrame.style requires jinja2

pip install jinja2
打包执行,问题还是没解决。参考一个issue【pyinstaller】后,尝试更新pyinstaller版本

执行 pip install --upgrade pyinstaller,编译打包执行,完美,28M。