gpt4 book ai didi

python-3.x - Python pkg_resources 和包中的文件访问

转载 作者:行者123 更新时间:2023-12-03 01:56:44 25 4
gpt4 key购买 nike

我正在构建我的第一个 python 包(然后使用 pip 安装),并且我需要使用一些非 python 文件。在 these answers ,解释说我应该使用 pkg_resources 函数。但我无法找出一个有效的例子。假设我有这个项目结构:

package_name/
----data/
--------image.png
----package_name/
--------__init__.py
--------file.py
----setup.py
----MANIFEST.in
----conf.yml

现在我想从 file.py 访问 conf.ymlimage.png。我应该如何继续:

  • 文件.py ?
  • setup.py ?
  • MANIFEST.in ?

最佳答案

访问这些文件的最简单方法是将其包含在 MANIFEST.in

global-include *.png
global-include *.yml

MANIFEST.in 只会使用源发行版的文件,而 setup.py 将包含二进制/轮发行版的文件,因此为了安全起见,在 setup.py 内部

include_package_data = True,
package_data = {
'' : ['*.png'],
'' : ['*.yml'],
}

然后您可以像这样从 file.py 引用特定文件

from pkg_resources import resource_string


def foo():
pngfile = resource_string(__name__, 'data/image.png')
ymlfile = resource_string(__name__, 'conf.yml')

请注意我如何为 png 文件指定目录。

此解决方案也不考虑您可能想要排除的相同扩展名的文件,但可以通过排除或指定文件名轻松处理这些文件,而不是使用星号。

我知道有些问题很容易被认为是重复的,但我也很难找到一个可行的例子,经过一段时间的纠缠,我终于找到了一些可以工作的东西,就是这样。

关于python-3.x - Python pkg_resources 和包中的文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817944/

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