Python 从我部署的 pip 包中读取静态文件

Python read static file from within a pip package that I've deployed

感谢阅读问题。

我遇到了 SO post,其中一个解决方案讨论了使用 pkg_resources,我正在尝试使用它。

我的文件结构

x
  - x
    - to_read.json
    - __init__.py
  - to_read.json
  - __init__.py 

是的,我复制了它。 x 文件夹下

我的安装文件

from setuptools import find_packages, setup

setup(
    name='x',
    version='0.160',
    packages=find_packages(exclude="tests/"),
    url="git@github.com:A/B.git",
    package_data={'x': [
        'to_read.json',
        "x/to_read.json"
    ]},
    install_requires=["foo", "bar"]
)

试图读取它的代码

  1. 错误:Exception: the 'package' argument is required to perform a relative import for '.'
return json.loads(str(pkg_resources.open_text(".", 'to_read')))  # note, I removed the extension as mentioned in the solution
  1. FileNotFoundError
return json.loads(str(pkg_resources.open_text("x", 'to_read')))  # note, I removed the extension as mentioned in the solution

我想我不需要导入任何东西(SO post 导入的“模板”),因为它位于我目录的顶层?

谢谢!

解决方案是

  1. 导入库....import mylib

with pkg_resources.open_text(mylib, 'to_read.json') as file:
    return json.load(file)

所以基本上我认为不应该应用的所有内容都应用了。安息