Python 3.x 在Windows上执行PyInstaller创建的包时发生ModuleNotFound错误
我正在使用PyInstaller打包我的ML解决方案,其中包括keras和tensorflow。exe构建得很好,但是当我执行exe时,它为boto提供了一个Python 3.x 在Windows上执行PyInstaller创建的包时发生ModuleNotFound错误,python-3.x,pyinstaller,boto,Python 3.x,Pyinstaller,Boto,我正在使用PyInstaller打包我的ML解决方案,其中包括keras和tensorflow。exe构建得很好,但是当我执行exe时,它为boto提供了一个ModuleNotFoundError。如果我使用该脚本运行该解决方案,它就可以正常工作。所有依赖项都已安装 这是我的规范文件: block_cipher = None a = Analysis(['main.py'], pathex=['.'], binaries=[],
ModuleNotFoundError
。如果我使用该脚本运行该解决方案,它就可以正常工作。所有依赖项都已安装
这是我的规范文件:
block_cipher = None
a = Analysis(['main.py'],
pathex=['.'],
binaries=[],
datas=[('data\\*.tsv', 'data')],
hiddenimports=['sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='main')
以下是错误:
文件“site packages\gensim\utils.py”,第44行,在文件中
“c:\programdata\anaconda3\envs\catalogai\lib\site packages\PyInstaller\loader\pyimod03\u importers.py”,
exec_模块中的第627行
exec(字节码,模块.dict)文件“站点包\smart\u open\uuuu init\uuuu.py”,第28行,在文件中
“c:\programdata\anaconda3\envs\catalogai\lib\site packages\PyInstaller\loader\pyimod03\u importers.py”,
exec_模块中的第627行
exec(字节码,模块.dict)文件“站点包\smart\u open\smart\u open\u lib.py”,第39行,在
ModuleNotFoundError:没有名为“boto”[9628]的模块无法执行
主脚本
您是否尝试手动安装boto模块
pip安装boto3
首先安装pip根据有时PyInstaller无法找到导入的模块并将其包含在可执行输出中。解决方案很简单:
要查找这些隐藏的导入,请使用-v
标志构建应用程序(获取上面Python的详细导入)并运行它
一旦知道需要哪些模块,就可以使用--hidden import=
命令选项,或者通过编辑规范文件,或者使用钩子文件,将所需的模块添加到捆绑包中(请参见下面的了解PyInstaller钩子)
只需将缺少的模块添加到hiddenimports
block_cipher = None
a = Analysis(['main.py'],
pathex=['.'],
binaries=[],
datas=[('data\\*.tsv', 'data')],
hiddenimports=['sklearn.neighbors.typedefs','sklearn.neighbors.quad_tree','sklearn.tree._utils','boto`],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='main')
编辑脚本重命名导入
导入boto3
。你试过了吗。。?在方法调用时重命名它对我也有效。尽管我必须通过许多依赖项才能找到它们。谢谢