gpt4 book ai didi

Python 和使用 shelve.py 卡住应用程序

转载 作者:行者123 更新时间:2023-11-28 22:59:17 25 4
gpt4 key购买 nike

我正在尝试卡住涉及使用搁置模块的应用程序。为了卡住它,我正在使用 GUI2EXE python 代码并利用 cx_freeze 部分(如果我删除搁置部分,一切都会很好)。

当我去运行我编译的应用程序时,它提示

File "anydbm.pyc", line 62, in ?
ImportError: no dbm clone found; tried ['dbhash', 'gdbm', 'dbm',
'dumbdbm']

我四处寻找答案。他们中的大多数人说要将此添加到脚本中:

for i in ['dbhash', 'gdbm', 'dbm', 'dumbdbm']:
try: eval('import '+i)
except: pass

但是,这对我没有任何作用。如果我包含 dbhash 模块,则会收到与不存在 bsddb 模块相关的错误。我似乎无法弄清楚这个问题。我是否错误地实现了上述内容?我错过了什么吗?

PS,我需要使用 cx_freeze —— 其他(py2exe、pyinstaller)不能很好地与我程序的其他部分一起使用。另外,我真的很想使用 shelve —— 就像我说的,没有它它编译和工作正常。

谢谢!

编辑

根据 Mike 的要求,我附上了安装脚本。是的,我尝试包含模块(未显示),但它不起作用。我什至在我的主脚本中包含了 anydbm 和 dbhash。这似乎也不起作用。

此外,如果您知道有比搁置更好的方法来存储我的变量/列表/字典/等,我很想知道。我尝试了 ZODB(也没有构建好)。目前,我确实找到了 pdict(使用 PersistentDict),当我卡住应用程序时这很好用。但是,我发现搁置速度更快。如果可能的话,希望搁置工作...

我的设置脚本:

from cx_Freeze import setup, Executable

includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
'Tkconstants', 'Tkinter']
packages = []
path = []

for i in ['dbhash', 'gdbm', 'dbm', 'dumbdbm']:
try:
eval('import '+i)
except:
pass


GUI2Exe_Target_1 = Executable(
# what to build
script = "myscript.py",
initScript = None,
base = 'Win32GUI',
targetDir = r"dist",
targetName = "myscript.exe",
compress = True,
copyDependentFiles = False,
appendScriptToExe = False,
appendScriptToLibrary = False,
icon = None
)

setup(

version = "0.1",
description = "No Description",
author = "No Author",
name = "cx_Freeze Sample File",

options = {"build_exe": {"includes": includes,
"excludes": excludes,
"packages": packages,
"path": path
}
},

executables = [GUI2Exe_Target_1]
)

最佳答案

eval('import foo') 总是会失败:eval 用于表达式,而 import 是语句。您应该避免未指定异常类型的 except: 子句 - 它们会隐藏代码中的真正错误。

尝试这样的事情:

for dbmodule in ['dbhash', 'gdbm', 'dbm', 'dumbdbm']:
try:
__import__(dbmodule)
except ImportError:
pass
else:
# If we found the module, ensure it's copied to the build directory.
packages.append(dbmodule)

关于Python 和使用 shelve.py 卡住应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13164245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com