我的包里有一些脚本,它们依赖于一些模板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)