【问题标题】:PyInstaller issue with PymongoPymongo 的 PyInstaller 问题
【发布时间】:2018-09-23 13:49:27
【问题描述】:

我正在尝试制作一个使用 Pymongo 和 Kivy 的 Windows 可执行文件。我正在使用 PyInstaller 来创建它。我正在使用 Python 3.6。

当我直接运行 main.py 时,它按预期工作,但是当我尝试运行 main.exe 时,它​​会打开 kivy 窗口,但是当我尝试访问远程 MongoDB 时会崩溃并出现以下错误

pymongo.errors.ConfigurationError: The "dnspython" module must be installed to use mongodb+srv:// URIs
[11992] Failed to execute script main

我的规范文件是:

from kivy.deps import sdl2, glew

block_cipher = None


a = Analysis(['c:\\mypath\\main.py'],
         pathex=['c:\\mypath\\build'],
         binaries=[],
         datas=[],
         hiddenimports=['dnspython'],
         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,
      [],
      exclude_binaries=True,
      name='main',
      debug=False,
      bootloader_ignore_signals=False,
      strip=False,
      upx=True,
      console=True )
coll = COLLECT(exe,
      Tree('c:\\mypath'),
      a.binaries,
      a.zipfiles,
      a.datas,
      *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
      strip=False,
      upx=True,
      name='main')

我第一次尝试没有将 dnspython 列为隐藏导入。

我尝试在 main.py 中显式导入 dnspython,但直接运行 main.py 时出现模块未找到错误。 ModuleNotFoundError: 没有名为“dnspython”的模块

我确实运行了python -m pip install --upgrade dnspython,但收到“要求已经是最新的:dnspython”

我不知道还能尝试什么!

【问题讨论】:

    标签: python python-3.x pymongo dnspython


    【解决方案1】:

    问题是导入不是dnspython(尽管这是错误中给出的名称并由pip使用)实际模块只是dns

    因此,我能够通过更改规范文件来解决问题,以便 hiddenimports 是:

    hiddenimports=['dns']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2022-01-14
      • 2020-12-26
      • 2013-06-07
      • 2021-06-25
      • 2021-11-07
      • 1970-01-01
      相关资源
      最近更新 更多