gpt4 book ai didi

python - 在 Python 模块分发中查找文件

转载 作者:IT老高 更新时间:2023-10-28 22:14:33 24 4
gpt4 key购买 nike

我编写了一个 Python 包,其中包含一个 bsddb 数据库,其中包含一个用于更耗时的计算的预计算值。为简单起见,我的安装脚本将数据库文件安装在与访问数据库的代码相同的目录中(在 Unix 上,类似于/usr/lib/python2.5/site-packages/mypackage/)。

如何存储数据库文件的最终位置,以便我的代码可以访问它?现在,我正在使用基于访问数据库的模块中的 __file__ 变量的 hack:

dbname = os.path.join(os.path.dirname(__file__), "database.dat")

它有效,但它似乎...... hackish。有一个更好的方法吗?我想让安装脚本从 distutils 模块中获取最终安装位置,并将其填充到“dbconfig.py”文件中,该文件与访问数据库的代码一起安装。

最佳答案

尝试使用 pkg_resources,它是 setuptools 的一部分(在我现在可以访问的所有 python 上都可用):

>>> import pkg_resources
>>> pkg_resources.resource_filename(__name__, "foo.config")
'foo.config'
>>> pkg_resources.resource_filename('tempfile', "foo.config")
'/usr/lib/python2.4/foo.config'

eggs 上有更多关于使用 pkg_resources 获取资源的讨论。页面和 pkg_resources页面。

另外请注意,可能建议使用 pkg_resources.resource_stream 或 pkg_resources.resource_string,因为如果包是鸡蛋的一部分,resource_filename 会将文件复制到临时目录。

关于python - 在 Python 模块分发中查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104/

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