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

时间:2017-08-14 08:10:23

标签: python caching subtitle subliminal

我制作了一个使用潜意识的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.gnu , dbm.ndbm , dbm.dumb代替import dbm.dumb而不是--hidden-import dbm

令人惊讶的是,这样做开始了我的申请。但潜意识现在没有找到任何副标题。所以它现在完全没用了。

我做错了什么。什么是解决这个问题的正确方法。在编译时,我也试过给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 没有运气。

这是我用来使用pyinstaller进行编译的命令: -

console.log($(".no-styles.que-list.que-checkbox").data('max-count'));

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

1 个答案:

答案 0 :(得分:0)

我发现,在_dbm包中只能在类UNIX系统中使用。

经过一番摆弄并最终修复它。

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

import dbm.dump