当前位置: 首页 > 面试题库 >

如何使用pyinstaller创建最小大小的可执行文件?

蓟辰沛
2023-03-14
问题内容

我在Windows 10上,安装了anaconda,但我想使用python 3.5在新的,干净的最小环境中独立创建可执行文件。所以我做了一些测试:

TEST1:我在文件夹testenv中仅创建了一个python脚本test1.py:

print('Hello World')

然后创建环境,安装pyinstaller并创建可执行文件

D:\testenv> python -m venv venv_test
...
D:\testenv\venv_test\Scripts>activate.bat
...
(venv_test) D:\testenv>pip install pyinstaller
(venv_test) D:\testenv>pyinstaller --clean -F test1.py

它创建了大约6 Mb的我的test1.exe

测试2:我将test1.py修改如下:

import pandas as pd
print('Hello World')

我在环境中安装了熊猫并创建了新的可执行文件:

(venv_test) D:\testenv>pip install pandas
(venv_test) D:\testenv>pyinstaller --clean -F test1.py

蚂蚁创建了我的test1.exe,现在它的大小为 230 Mb

如果我运行命令

(venv_test) D:\testenv>python -V
Python 3.5.2 :: Anaconda custom (64-bit)

当我运行pyinstaller时,收到一些我不理解的消息,例如:

INFO: site: retargeting to fake-dir 'c:\\users\\username\\appdata\\local\\continuum\\anaconda3\\lib\\site-packages\\PyInstaller\\fake-modules'

我也收到有关matplotlib和其他与我的代码无关的模块的消息,例如:

INFO:   Matplotlib backend "pdf": added
INFO:   Matplotlib backend "pgf": added
INFO:   Matplotlib backend "ps": added
INFO:   Matplotlib backend "svg": added

我知道有一些相关的问题: 减少pyinstallerexe文件的大小,可执行使用pyinstaller和numpy的大小 ,但我没能解决问题,恐怕我做错了什么关于python。

所以我的问题是:我在做什么错?我可以减小可执行文件的大小吗?


问题答案:

问题在于您不应该使用虚拟环境,尤其是anaconda。请下载默认的python 32位,并仅使用必要的模块。然后按照链接中提供的步骤操作,这肯定可以解决它。

尽管您创建了一个虚拟环境,但是您确定您的spec文件没有链接到旧的Anaconda条目吗?

如果所有操作均失败,请提交错误,因为这很奇怪。



 类似资料:
  • 我在Windows 10,我有anaconda安装,但我想创建一个独立的可执行文件在一个新的,干净的最小环境使用python 3.5.所以我做了一些测试: 我创建了一个python脚本test1.py在文件夹testenv只有: 然后我创建了环境,安装了pyinstaller并创建了可执行文件 它创造了我大约6Mb的test1.exe 测试2:我修改了测试1。具体如下: 我在环境中安装了panda

  • 问题内容: 我只有一行用python编写的代码,并带有pyinstaller和option 。exe文件为4577 kB,几乎是5Mb。如何减小其大小或排除某些自动捆绑的图书馆? 问题答案: 您使用pyinstaller创建的.exe文件包括python解释器和脚本中包含的所有模块。也许您正在使用的模块本身都有一个很大的库。但是,您可以尝试使用 py2exe, 但它可能不适用于所有项目。另一种缩小

  • 我想使用pyInstaller的单文件夹模式,但我不想每次都收集所有依赖项。 大多数情况下,我可以重用它以前打包的所有依赖项,我只需要可执行文件,我想如果我能在构建过程中尽快停止,我会在构建过程中节省10~20分钟。exe文件已生成。 我知道用-F标志将所有依赖项打包到一个可执行文件中,但这不是我想要的。我只希望pyInstaller在打包步骤之前停止。 我希望生成在可能输出时立即停止:

  • 我已经使用quarkus maven插件创建了一个quarkus应用程序。 我的maven pom如下: 但是,当我尝试使用 ,我会收到以下错误消息,独立于平台。 我承认我没有创建任何类型的主类,因为quarkus似乎不需要它。但是我如何向Java平台声明我打算让quarkus决定主类呢? 编辑为了回应c. twitter,这里有更多的信息 内容是 我很确定你们中的一些人会要求清单。MF含量 我认

  • 问题内容: 我需要在Java中编写一个算法(对于android应用程序)来读取包含更多文件夹的文件夹,以及每个包含图像和音频文件的文件夹,因此结构如下: 我的问题是我需要将档案的大小限制为16mb,并且在运行时,根据需要创建尽可能多的档案,以包含主文件夹中的所有文件。 我从网上尝试了几个示例,并阅读了Java文档,但是我无法理解并按照需要的方式将它们放在一起。有人以前做过这个吗,或者有一个链接或一

  • 提前感谢你的帮助