将Python脚本打包成.exe文件并保留导入的模块

3

我有一个Python脚本,想把它打包成.exe文件以方便使用。Python脚本广泛使用Tkinter模块进行漂亮的GUI设计。我首先使用pyinstaller将它打包成.exe文件,并按照这里的指南进行操作。

我遇到了两个问题。第一个问题是,我的脚本使用了FlowCal模块,但它并未包含在Python的pyinstaller中(我使用Spyder制作脚本,使用Python 3.8编译时使用pyinstaller)- 所以我使用pip install FlowCal安装了FlowCal模块,以便Python也能够使用它(我认为是这样工作的?不太确定)。但是FlowCal依赖于各种sklearn模块,手动安装模块、编译文件再检查是否可用,将会是一件很头疼的事情。是否有一种方式可以将脚本所使用的所有模块(以及导入模块所使用的所有模块)全部编译到脚本中?

第二个问题是,在GUI窗口旁边出现了另一个窗口。包括图片在内。如何删除那个窗口?

显示了另一个窗口 (右边) 和 GUI 窗口 (左边) 的图片


1
Pyinstaller应该自动跟踪所有模块和依赖项。我通常会将最小的依赖项安装到新的Anaconda环境中,以获得尽可能小的构建大小。对于某些模块,您可能需要添加显式导入。一个好的起点在这里:https://pyinstaller.readthedocs.io/en/stable/when-things-go-wrong.html - Dschoni
1
有一个很好的PyInstaller包装器,这是链接,叫做auto-py-to-exe。它是一个图形界面,显示了所有可以在打包EXE时配置的PyInstaller选项。要删除您看到的黑色控制台窗口,您必须在图形界面选项中设置为制作窗口应用程序,而不是控制台。此外,您必须首先检查您的应用程序是否在没有EXE的情况下运行良好,以便所有模块都已经通过pip安装。之后,在构建EXE时,pyinstaller将自动包括所有导入的模块。 - Arty
1
这可能会对你有所帮助:https://dev59.com/S4jca4cB1Zd3GeqPz6vx - Paul
2个回答

4

您可以轻松使用auto-py-to-exe完成以下操作,将.py文件转换为.exe文件,只需在GUI中点击几个按钮即可。首先,在命令提示符或PowerShell中输入命令:pip install auto-py-to-exe。安装成功后,在命令提示符中输入命令auto-py-to-exe,然后提供必要的信息,即可获得您生成的可执行文件!


解决方案是使用auto-py-to-exe,并显式添加隐藏模块。这些隐藏模块是sklearn.neighbors._typedefs、sklearn.utils._weight_vector和sklearn.neighbors._quad_tree。 - ivan199415

1
将缺失的模块添加到hiddenimports中。
hiddenimports=['sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils']

或者当你在命令行中创建exe时使用它:

--hidden-import=modulename

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接