WebHU - Programozási kérdések és válaszok

A Python shove modul nem működik a py2app build után Macen

Az objektumok megmaradásához a shove modult használom. Jól működik, de amikor megpróbálom felépíteni az alkalmazást a py2app használatával, akkor nem működik. A következő kód normálisan működik, kivéve a py2app használatával történő lefagyasztást követően:

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()

A setup.py fájl a következőket tartalmazza:

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'],
)

A visszajelzés, amit kapok, a következő:

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'

Mi lehet a probléma?

05.11.2015

Válaszok:


1

Azt tapasztaltam, hogy a probléma az, hogy a shove funkciókat nagyrészt bővítmények segítségével valósítják meg, amelyek a pkg_resources.iter_entry_points használatával töltődnek be. Sajnos a py2app nem támogatja az iter_entry_points-t. Ennek ellenére megtaláltam ezt, ami egy lehetséges megoldás lehet .

05.11.2015

2

A Shove telepítése után újraindítottad a Python-t?

Ugyanaz a KeyError: "fájl" történik, ha nem indítja újra: importálhatja a könyvtárat, de a Shove nem tud betölteni egyetlen modult sem

03.01.2016
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..