pyd包导入打包报ModuleNotFoundError: No module named
将项目的一个模块转pyd后,在pycharm运行正常,但是使用pyinstaller打包为exe文件后出错:
ModuleNotFoundError: No module named 'common.we_logger'
pyd模块中引入项目的文件无法被识别了
解决方法1:
在spec文件的hiddenimports中加入‘comm.we_logger’ 在spec文件的hiddenimports中加入’comm.we_logger’
解决方法2:
在项目根目录创建hooks目录,然后创建钩子文件hook-common.py,并将其放在hooks目录中,文件内容如下:
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('common')
然后在spec文件的hookespath中指定hooks目录
# spec file
a = Analysis(['main.py'],
pathex=['/path/to/your/project'],
binaries=[],
datas=[],
hiddenimports=['common.we_logger'],
hookspath=['hooks'],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=None,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=None)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
再次打包即可成功执行包含pyd的项目