使用 setuptools 使用 Python 库安装数据文件位置
installed data files location with a Python library using setuptools
我正在构建和发布一个 Python 库,我需要在其中有一个模板文件 (xml) 供以后编辑和写入磁盘。
比方说,我的包目录中有 template.xml
。
我读到有两种方法:
- 有
MANIFEST.in
和 include mypackage/template.xml
- 在
setup.py
中指定:package_data={'mypackage': ['template.xml']}
在这两种情况下,我都保留了选项 include_package_data=True
。
看来,文件是放入egg中的。
然后我使用 sdist
分发构建我的库并在 pypi
上发布(这是在 Travis 中完成的)。
但显然我的文件没有安装。或者至少我没有找到它。
要获取文件,我尝试这样做:
xml_template = pkg_resources.resource_filename('mypackage', 'template.xml')
导致
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.7/site-packages/mypackage/template.xml'
我该怎么办?
显然,删除 include_package_data=True
解决了问题。
我在这个答案上找到了思路
但没有解释为什么。
我正在构建和发布一个 Python 库,我需要在其中有一个模板文件 (xml) 供以后编辑和写入磁盘。
比方说,我的包目录中有 template.xml
。
我读到有两种方法:
- 有
MANIFEST.in
和include mypackage/template.xml
- 在
setup.py
中指定:package_data={'mypackage': ['template.xml']}
在这两种情况下,我都保留了选项 include_package_data=True
。
看来,文件是放入egg中的。
然后我使用 sdist
分发构建我的库并在 pypi
上发布(这是在 Travis 中完成的)。
但显然我的文件没有安装。或者至少我没有找到它。
要获取文件,我尝试这样做:
xml_template = pkg_resources.resource_filename('mypackage', 'template.xml')
导致
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.7/site-packages/mypackage/template.xml'
我该怎么办?
显然,删除 include_package_data=True
解决了问题。
我在这个答案上找到了思路