2017-08-14 55 views
0

我制作了一个GUI应用程序,它在其中使用了潜意识。然后我试着用PyInstaller编译程序。当我运行exe文件,它给了我下面的错误: -如何修复pyinstaller中no dbm clone发现的错误

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编译命令: -

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 

我将是任何线索感激或帮助:)

回答

0

我发现,只有_dbm包在UNIX系统中工作。

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

在你的主Python文件只使用此导入: -

import dbm.dump