python - 如何在 pyinstaller 中只包含需要的模块?
问题描述
我用来为我的单个python文件pyinstaller
生成一个.exe
文件,但是大小超过30MB,启动很慢。据我所知,pyinstaller
默认情况下捆绑了很多不需要的东西。有没有办法确保pyinstaller
找出只需要什么并只捆绑它们?我的脚本上的导入部分如下所示:
import datetime
import os
import numpy as np
import pandas as pd
import xlsxwriter
from tkinter import *
编辑:
或者还有一种方法可以查看它捆绑的所有模块的列表?所以我可以通过它们并排除我不需要的那些。
解决方案
为此,您需要创建一个单独的环境,因为当前您正在读取计算机上安装的所有模块。创建环境运行命令
1 - 如果您没有,请创建一个requirements.txt
包含您正在使用的所有包的文件,您可以使用以下命令创建一个:
pip freeze > requirements.txt
2 - 创建环境文件夹:
python -m venv projectName
3 - 激活环境:
source projectName/bin/activate
4 - 安装它们:
pip install -r requirements.txt
或者,如果你知道你只使用 wxpython,你可以pip install wxpython
5 - 最后你可以使用argpyinstaller
在你的主脚本上运行,如this answer中所述:--path
pyinstaller --paths projectName/lib/python3.7/site-packages script.py
推荐阅读
- python - 按内部数组的特定元素分组
- pandas - 为什么熊猫处理两个数据帧与一个数据帧的子图不同?
- apache-spark - beam-release-2.16.0 中没有 gradlew
- python-3.x - AttributeError:模块“队列”没有属性“SimpleQueue”
- c# - 如何明确设计这两个类?
- microsoft-graph-api - microsoft graph rest api:更新应用程序失败并出现错误 badrequest - 错误:属性值是必需的,但为空或缺失
- php - Slim 框架:调用内部 API REST
- java - Jackson Json 和 @JsonAnySetter 的行为不稳定
- javascript - 如何将php变量传递给ajax成功函数并分配给JavaScript变量
- php - 获取最近 2 分钟插入的行数