Bootstrap

pyd包导入打包报ModuleNotFoundError: No module named ‘xxx‘

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的项目

;