【问题标题】:Accessing data files from within an egg从 egg 中访问数据文件
【发布时间】:2020-05-14 00:59:51
【问题描述】:

我有一个带有默认 json 文件的包,以防用户没有提供一个 data = pkgutil.get_data(__name__, "deprecated.json")

独立运行时效果很好

但是如果我运行python setup.py install 来创建my.egg 奔跑easy_install my.egg 最后启动可执行文件我收到一条错误消息[Errno 2 nosuch file or director: `d:\\work\\pythonvenv\\lib\\site-packages\\my.egg\\PackageName\\depercate.json

    return loader.get_data(resource_name)
  File "<frozen importlib._bootstrap_external>", line 972, in get_data

我认为使用 pkgutil.get_data 的目的是为了防止此类问题?

【问题讨论】:

    标签: python egg


    【解决方案1】:

    修改您的setup.py 文件以包含package_data,如https://docs.python.org/3.8/distutils/setupscript.html#installing-package-data 中一样

    setup(
        ...,
        package_data={'pkgName': ["path/to/deprecated.json"]},
    )
    

    实现相同行为的另一种方法是创建一个MANIFEST.in 文件,其内容为include path/to/deprecated.json,然后在您的setup 函数中包含参数include_package_data=True。这在https://python-packaging.readthedocs.io/en/latest/non-code-files.html中有详细说明。

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 2018-09-21
      • 2011-12-29
      • 2011-04-08
      • 2010-09-15
      • 2011-05-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多