如何修复 pyinstaller 中的 no dbm clone found 错误

Posted

技术标签:

【中文标题】如何修复 pyinstaller 中的 no dbm clone found 错误【英文标题】:How to fix the no dbm clone found error in pyinstaller 【发布时间】:2017-08-14 08:10:22 【问题描述】:

我制作了一个使用潜意识的 GUI 应用程序。然后我尝试使用 PyInstaller 编译程序。当我运行exe时,它给了我以下错误:-

Traceback (most recent call last):
  File "main.py", line 375, in <module>
  File "main.py", line 144, in __init__
  File "site-packages\dogpile\cache\region.py", line 237, in configure
  File "site-packages\dogpile\cache\backends\file.py", line 158, in __init__
  File "site-packages\dogpile\cache\backends\file.py", line 182, in _init_dbm_file
  File "dbm\__init__.py", line 75, in open
ImportError: no dbm clone found; tried ['dbm.gnu', 'dbm.ndbm', 'dbm.dumb']
Failed to execute script main

在此之后,我尝试在我的应用程序中显式导入 dbm,如下所示:- import dbm 。但这也给出了同样的错误。

然后我尝试了 import dbm.gnu , dbm.ndbm , dbm.dumb 。 这给出了另一个错误,如下所示:-

Traceback (most recent call last):
  File "main.py", line 3, in <module>
  File "c:\program files\python35\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "userinterface.py", line 312, in <module>
  File "c:\program files\python35\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "main.py", line 9, in <module>
  File "c:\program files\python35\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "dbm\ndbm.py", line 3, in <module>
ImportError: No module named '_dbm'
Failed to execute script main

一些谷歌搜索,我发现它使用 dbm.gdbm 中的 _dbm 包。所以我用 import dbm.dumb 而不是 import dbm.gnu , dbm.ndbm , dbm.dumb

令人惊讶的是,这样做启动了我的应用程序。但是潜意识现在没有找到任何字幕。所以现在完全没用了。

我做错了什么。什么是解决这个问题的正确方法。在编译时,我也尝试过给--hidden-import dbm,但没有运气。


这是我使用 pyinstaller 编译时使用的命令:-

pyinstaller main.py --hidden-import dbm --hidden-import dogpile.cache.backends.file  --additional-hooks-dir=. --add-data guessit;guessit --add-data babelfish;babelfish -i vid2.ico -n Subtitler

如果有任何线索或帮助,我将不胜感激:)

【问题讨论】:

【参考方案1】:

我发现,在 _dbm 包中只适用于类 UNIX 系统。

经过一番折腾,终于修好了。

在你的主要 python 文件中使用这个导入:-

import dbm.dump

【讨论】:

以上是关于如何修复 pyinstaller 中的 no dbm clone found 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyInstaller 编译得到 pyodbc 后如何在启动时修复错误?

如何使用 Python、PyQt5 和 Pyinstaller 修复未正确显示的按钮

在 MacOS Mojave 上从 PyInstaller 运行应用程序后如何修复 msgcat::mc 错误?

如何修复 (ModuleNotFoundError: No module named 'sklearn'.) spyder 中的错误

如何修复 ubuntu 中的“No module named 'kivy._clock'”错误?

如何修复从 cosmos db 中的 databricks scala 读取流中的“错误:未找到:键入 CosmosDBSourceProvider”