gpt4 book ai didi

python - 当我已经安装了父模块时,如何解决缺少的实用程序模块阻止我的可执行文件运行的问题?

转载 作者:行者123 更新时间:2023-12-01 07:38:19 25 4
gpt4 key购买 nike

我编写了一些 Python 脚本来为机器学习算法过程创建 tkinter GUI。我最初在 PyCharm 中编写了所有内容,但我真的很想将所有内容放在一个独立的可执行文件中。我已将主脚本及其 .py 依赖项移至其自己的目录中,并使用命令提示符对其进行了测试,效果非常好。但是,当我运行 pyinstaller 时,会创建可执行文件,但启动时失败。

该程序由三个文件组成,其中 GUI.py 是主脚本。如上所述,我将依赖文件移动到一个新目录中,并在命令提示符中测试了 GUI.py,效果很好。可执行文件已创建(尽管有很多关于缺少“api-ms-win-crt”文件的警告),但无法运行。

我使用以下命令创建了可执行文件:

pyinstaller --onefile GUI.py

当创建后从命令行运行可执行文件时,我得到一个长长的回溯,结尾如下:

File "site-packages\sklearn\metrics\pairwise.py", line 32, in <module>
File "sklearn\metrics\pairwise_fast.pyx", line 1, in init
sklearn.metrics.pairwise_fast
ModuleNotFoundError: No module named 'sklearn.utils._cython_blas'
[3372] Failed to execute script GUI

我知道我已经通过命令提示符显式导入了 sklearn,但从回溯来看,我似乎在某处缺少实用程序模块。我尝试专门导入缺少的模块,但出现错误,没有可用的分布式模块。我对 pyinstaller 没有太多经验,我不知道从这里该去哪里。我使用的是 Windows 10 和 Python 3.7.3。

最佳答案

Pyinstaller 似乎无法解析 sklearn进口。因此,一种简单的方法就是将位于 <path_to_python>/Lib/site-packages/sklearn/ 的整个模块目录放入其中。具有可执行输出。因此,请使用下面的规范文件来生成可执行文件:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['test.py'],
pathex=['<path to root of your project>'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += Tree('<path_to_sklearn_in_python_dir>', prefix='sklearn')
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='test',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
runtime_tmpdir=None,
console=True )

最后生成可执行文件

pyinstaller test.spec

这应该可以解决 sklearn 的导入错误但如果您遇到其他 NotFound 导入,请将它们像上面一样添加到规范文件中。

关于python - 当我已经安装了父模块时,如何解决缺少的实用程序模块阻止我的可执行文件运行的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56860120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com