我有一个在OSX上用Python2.7.2开发的应用程序。 我使用模块shelve,在mac上似乎默认为bsddb。 由于模块bsddb不存在,也不在ActiveState的包管理器(pypm)中,所以该程序无法在带有ActiveState python2.7的windows7计算机上运行。ActiveState的文档显示在v2.6中已弃用。 我想它会尝试bdddb,因为创建DB的osx python默认为bsddb。 当我删除shelve数据库并在Windows上运行它时,它很乐意使用其他一些底层数据库。Mac的Python也很高兴。在
所以我认为我应该强制使用shelve的非bdsdb后端。就像gdbm模块。 但我不知道怎么做。在
我好像问错了问题。在构建windowsexe时,py2exe没有包含dbm模块(它无法推断出这种依赖关系),因此在运行时python绝望地试图找到bdbm模块。在
这个剧本设置.py包含一个模块,该模块使py2exe版本的行为类似于正常运行的版本。它包括一个dbm克隆模块(我只存储十个简单的字典,所以基本的dumbdbm模块就足够了
您可以在调用
shelve.open
之前设置anydbm._defaultmod
来设置创建的数据库的类型。在这适用于Python2.6(也可能适用于2.7?),但由于
anydbm._defaultmod
是一个私有变量,请注意这是一次黑客攻击。在例如:
^{pr2}$相关问题 更多 >
编程相关推荐