2017-08-14 41 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