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

带有Pandas的PyInstaller创建了500 MB以上的exe

闽朝
2023-03-14
问题内容

我尝试使用PyInstaller 3.2.1创建exe文件,出于测试目的,我尝试为以下代码制作exe文件:

import pandas as pd
print('hello world')

经过相当长的时间(15分钟以上)后,我完成了620 MB的dist文件夹并构建了150 MB。我在Windows上使用Python 3.5.2 |
Anaconda自定义(64位)。可能值得注意的是,在dist文件夹中,mkl文件负责将近300 MB。我使用’pyinstaller.exe
foo.py’运行pyinstaller。我尝试使用–exclude-
module排除某些依赖项,但最终仍以巨大的文件结尾。我使用onefile还是onedir都没有任何区别。

我知道exe必须包含一些重要的文件,但是正常大小可以达到1 GB是否正常?我可以在必要时提供警告日志,或者提供任何有助于解决此问题的信息。

PS同时,我的同事用相同的示例脚本创建了一个exe文件,最终不到100 MB,不同之处在于他没有使用anaconda。可能是这样吗?

任何帮助将不胜感激。


问题答案:

PyInstaller从conda软件包创建大可执行文件,从pip软件包创建小可执行文件。从这个简单的python代码:

from pandas import DataFrame as df
print('h')

我通过conda软件包获得了203MB可执行文件,通过pip软件包获得了30MB可执行文件。但是conda是纯virtualenv的不错替代。我可以使用conda和Jupyter进行开发,创建一些mycode.py(我可以在myfolder中将pypy文件下载为pypy文件)。但是接下来是我的最终解决方案:如果没有该解决方案,请安装Miniconda,然后从Windows“开始”菜单中打开Anaconda
Prompt。

    cd myfolder
    conda create -n exe python=3
    activate exe
    pip install pandas pyinstaller pypiwin32
    echo hiddenimports = ['pandas._libs.tslibs.timedeltas'] > %CONDA_PREFIX%\Lib\site-packages\PyInstaller\hooks\hook-pandas.py
    pyinstaller -F mycode.py

在我创建新环境“ exe”的地方,pypiwin32需要pyinstaller,但不会自动安装,hook-
pandas.py需要与pandas一起编译。另外,导入子模块也无法帮助我优化可执行文件的大小。所以我不需要这个东西:

from pandas import DataFrame as df

但我只能使用通常的代码:

import pandas as pd

另外,在路径中使用国家字母可能会导致一些错误,因此英语用户帐户是开发工具的不错之选。



 类似资料:
  • 我尝试使用PyInstaller 3.2.1创建一个exe文件,出于测试目的,我尝试为以下代码创建一个exe: 经过相当长的时间(15min+),我完成了大到620 MB的dist文件夹和150 MB的build。我在Windows上使用Python 3.5.2Anaconda定制(64位)。值得注意的是,在dist文件夹中,mkl文件几乎占用了300 MB。我使用'pyinstaller.exe

  • 问题内容: 我用PHP创建了一个上传页面,但是我不知道为什么该页面不会上传大于500MB的文档,这是我第一次尝试上传较大的内容,因此我更改了PHP.INI中的所有配置(post_max_size = 700M ,upload_max_filesize = 600M和max_execution_time = 300)。上传代码如下 我需要帮助,我想知道是否有某些事情做对了。 问题答案: 您认为增加上

  • 问题内容: 两者之间到底有什么区别 和 第一个只是加快字段初始化速度的捷径吗?有性能方面的考虑吗? 问题答案: 第二种形式总是创建一个空的地图。 第一种形式是地图文字的特殊情况。地图文字允许创建 非空 地图: 现在,您的(通用)示例: 是没有初始值(键/值对)的地图文字。它完全等同于: 此外,这是为地图指定初始容量(大于初始分配的元素数量)的唯一方法。例: 将创建一个地图,该地图具有足够的空间来容

  • Eclipse允许您构建一个runnable.jar,但不允许您指定一个manifest.mf。 或者,您可以创建一个.jar并指定一个清单,但它将不可运行。

  • 我的程序由: > 是一系列功能的治疗。它将两个csv文件作为输入,并返回一行的pandas DataFrame。最后一个函数名为 一个函数,调用add_data(),将结果保存在csv文件中,并在执行结束时通知用户 包括我处理的整个代码会太长,但我显式导入的是:pandas、geopandas、shapely.geometrio、tkinter(见下面的代码)。因为我以前解决了这个问题,所以在使用

  • 问题内容: 我有一个用Python编写的应用程序,并与PyInstaller进行了“编译”。它还将PyQt用于GUI框架。 加载并显示主窗口之前,运行此应用程序大约有10秒钟的延迟。据我所知,这不是由于我的代码慢。相反,我怀疑这是由于Python运行时初始化引起的。 问题在于此应用程序是使用自定义laucncher / taskbar应用程序启动的。用户将单击按钮启动该应用程序,看不到任何反应,然