2015-11-05 50 views
0

我正在使用shove模塊進行對象持久化。它工作正常,但是當我嘗試使用py2app構建應用程序時,它停止工作。下面的代碼工作正常,除了凍結使用py2app後:py2app建立在mac上後,Python推送模塊不工作

import os 
from shove import Shove 

if __name__ == '__main__': 
    home=os.path.expanduser("~") 
    path = os.path.join(home, 'testdb') 
    uri = 'file://{0}'.format(path) 
    print path 
    print uri 

    db = Shove(uri) 
    print db.keys() 

    db['1'] = 'dog' 
    db['2'] = 'cat' 
    db.sync() 
    db.close() 

的setup.py文件包含以下內容:

from setuptools import setup 

OPTIONS = dict(
argv_emulation = True, 
includes=['future_builtins','concurrent.futures'] 
) 

DATA_FILES = [] 


setup(
    app='highlightdb.py', 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS}, 
    setup_requires=['py2app'], 
) 

我得到的回溯是:

highlightdb[68150]:  db = Shove(uri) 
highlightdb[68150]: File "shove/core.pyc", line 23, in __init__ 
highlightdb[68150]: File "shove/_imports.pyc", line 46, in store_backend 
highlightdb[68150]: KeyError: 'file' 

有什麼事情問題是?

回答

0

我發現問題在於shove功能主要是使用插件來實現的,這些插件使用pkg_resources.iter_entry_points加載。不幸的是py2app不支持iter_entry_points。不過,我發現this,這可能是一種可能的解決方法。

0

安裝Shove後,您是否重新啓動了Python?

同樣KeyError異常:「文件」,如果你不重新啓動發生了:你可以導入庫,但肖夫不能加載任何模塊