【问题标题】:Packing python scripts into .exe file while keeping imported modules将 python 脚本打包到 .exe 文件中,同时保留导入的模块
【发布时间】:2021-05-01 06:11:48
【问题描述】:

我有一个 python 脚本我想打包到.exe 文件中以便于使用。 python 脚本广泛使用 Tkinter 模块来提供漂亮的 GUI。我首先使用 pyinstaller 将它打包到 .exe 中,并且此处的指南-https://datatofish.com/executable-pyinstaller/

我有两个问题。首先是我的脚本使用了 FlowCal 模块,该模块不附带 Python 的 pyinstaller(我使用 Spyder 制作了脚本,并且我正在使用 Python 3.8。使用 pyinstaller 进行编译) - 所以我使用 pip install FlowCal 安装了 FlowCal所以 Python 也得到了它(我认为它是这样工作的?不太确定)。但是后来FlowCal依赖于各种sklearn模块,安装模块,编译成exe,然后一遍又一遍地检查它是否工作会很头疼。有没有办法将脚本使用的所有模块(以及导入模块使用的所有模块)编译到脚本中?

第二个问题是,除了 GUI,我还有另一个窗口。包括图片。如何删除该窗口?

【问题讨论】:

  • Pyinstaller 应该自动跟踪所有模块和依赖项。我通常会在新的 Anaconda 环境中安装最小的依赖项集,以尽可能减小构建大小。对于某些模块,您可能需要添加显式导入。一个好的开始就在这里:pyinstaller.readthedocs.io/en/stable/when-things-go-wrong.html
  • PyInstaller 有一个很好的包装器,here is the link,称为 auto-py-to-exe。它是一个图形界面,显示了打包 EXE 时可以配置的所有 PyInstaller 选项。要删除您看到的黑色控制台窗口,您必须在图形界面选项中设置以制作窗口应用程序,而不是控制台。此外,您必须首先检查您的应用程序是否在没有 EXE 的情况下运行良好,以便所有模块都已安装 pip。之后在构建 EXE 时,pyinstaller 会自动包含所有导入的模块。
  • stackoverflow.com/questions/29005004/… 这可能对你有帮助

标签: python pyinstaller exe


【解决方案1】:

将缺少的模块添加到 hiddenimports

hiddenimports=['sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils']

或者在cmd中创建exe时使用

--hidden-import=modulename

【讨论】:

    【解决方案2】:

    您可以轻松完成的另一件事是使用 auto-py-to-exe。这将使用编写命令从 .py 生成 .exe,只需单击 GUI 中的一些按钮。为此,您必须在命令提示符或 PowerShell 中给出命令:pip install auto-py-to-exe,无论您最喜欢什么。成功安装 auto-py-to-exe 后,在命令提示符下输入命令auto-py-to-exe。然后提供必要的信息,并获取您生成的可执行文件!

    【讨论】:

    • 解决方案是使用 auto-py-to-exe 并显式添加隐藏模块。隐藏模块是 sklearn.neighbors._typedefs、sklearn.utils._weight_vector 和 sklearn.neighbors._quad_tree。
    猜你喜欢
    • 2019-07-14
    • 2021-08-16
    • 2020-08-27
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多