Import Error: "px" not found using pyinstaller

Import Error: "px" not found using pyinstaller

我正在尝试使用 pyinstaller 创建一个独立的可执行文件。

我使用 win10 venv 和 vmware,我安装了干净的 python 版本。

我可以像往常一样执行我的 .py 文件,但是如果我尝试 运行 我的 .exe 文件,我会收到以下错误:

到目前为止我已经尝试过:

  1. 在我的脚本中手动导入 px (import px)
  2. 使用命令 pyinstaller servicetool.spec --hidden-import=px 而不是 pyinstaller servicetool.spec
  3. 使用 pip install px,表示已经安装。
  4. hiddenimports=['px'] 添加到我的 .spec 文件,附在此处


block_cipher = None


a = Analysis(['C:\Users\philipp\Desktop\Servicetool\Servicetool.py'],
             pathex=['C:\Users\philipp\Desktop\Servicetool'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
a.datas += [('Favicon.ico', 'C:\Users\philipp\Desktop\Servicetool\Favicon.ico', 'DATA')]
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='servicetool',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=False,
      icon='C:\Users\philipp\Desktop\Servicetool\Favicon.ico')

抱歉我的英语不好,我是编程新手,所以请询问您是否需要更多信息。 感谢您的帮助和最诚挚的问候

答案相对简单...我只需要找出导致问题的库,然后我必须将一些丢失的 .dll 复制到我的 .py 文件夹中,然后我的 .py .spec 文件名。 在我的例子中,它是模块 pypxlib,它导入了 px 为此,我:

  1. 必须将 pxlib.dll 从 pip 源文件夹复制到我的文件夹中。
  2. 编辑我的 .spec 文件(数据):
a = Analysis(['servicetool.py'],
             pathex=['C:\Users\Philipp\Desktop\Servicetool'],
             binaries=[],
             datas=[('pxlib.dll', '.')],
             hiddenimports=[],
             hookspath=[],
             hooksconfig={},
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)```