通过package_data将非python文件复制到脚本目录



我的包里有一些脚本,它们依赖于一些模板xml文件。这些脚本可以通过入口点调用,我想通过相对路径引用模板文件。

当通过python -m ...调用脚本时,脚本本身是从libsite-packages内部调用的,并且当我将它们放在我的setup.py中时,可以使用xml文件,如下所示:

setup(
    ...
    packages=['my_pck'],
    package_dir={'my_pck': 'python/src/my_pck'},
    package_data={'my_pck': ['reports/templates/*.xml']},
    ...
)

我知道,我也可以通过在setup.py中使用data_files来复制这些模板,但使用package_data对我来说似乎更好。

不幸的是,package_data似乎没有将这些文件复制到入口点所在的Scripts文件夹中。

所以我的问题是,这是否可以通过package_data实现,如果,如何实现?或者有没有一种更pythonic,更简单的方法来实现这一点?也许不是通过相对于脚本的路径引用这些文件?

看起来importlib-resources可能会在这里有所帮助。此库能够找到打包为package_data的资源文件的实际路径 setuptools .

使用如下所示的内容从代码中访问package_data文件:

with importlib_resources.path('my_pck.reports.templates', 'a.xml') as xml_path:
    do_something(xml_path)

相关内容

  • 没有找到相关文章

最新更新