gpt4 book ai didi

python - setuptools 不分发我的数据文件

转载 作者:行者123 更新时间:2023-11-28 18:08:52 25 4
gpt4 key购买 nike

我在 setup.py 中有以下内容:

from setuptools import setup
# ...
setup(
name='xml-boiler',
version='0.0.1',
url='https://github.com/vporton/xml-boiler',
license='AGPLv3',
author='Victor Porton',
author_email='porton@narod.ru',
description='Automatically transform between XML namespaces',

packages=find_packages(),
package_data={'': ['*.ttl', '*.xml']},
scripts=['bin/boiler'],
data_files = [
('/etc/xmlboiler', ['etc/config-cli.ttl'])
],
test_suite="xmlboiler.tests",

cmdclass={'build_py': MyBuild},
)

但是在我运行 python setup.py build 之后,build 目录不包含任何 *.xml*.ttl 文件。

我的错误是什么?

我还想分发 xmlboiler/core/data/assets/ 中的所有文件和xmlboiler/core/data/assets/.


我不明白它是如何工作的:

package_data={'': ['*/.xml', '*/.ttl', '*/.net', 'data/assets/*', 'data/scripts/*.xslt', 'xmlboiler/doc/*.html', 'xmlboiler/doc/*.css']}, 

包含 xmlboiler/core/data/scripts/section.xslt 但不包含 xmlboiler/tests/core/data/xml/simple.xml。为什么?!

最佳答案

package_data 是包名称到文件或文件 glob 的映射。这意味着

package_data = {'', ['*.xml', '*.ttl']}

将包含位于任何包目录中以 .xml.ttl 结尾的每个文件,例如 xmlboiler/file.xmlxmlboiler/core/file.ttl 等。但是,它不会包含文件 xmlboiler/core/data/interpreters.ttl,因为它位于 data 不是包目录(不包含 __init__.py 文件)。要包含它,您应该使用正确的文件路径:

package_data = {'xmlboiler.core', ['data/interpreters.ttl']}

xmlboiler/core/data 下包含每个 .ttl 文件:

package_data = {'xmlboiler.core', ['data/*.ttl', 'data/**/*.ttl']}

这将包括 data 目录中的每个 .ttl 文件 (glob data/*.ttl) 和每个 .ttl 文件在 data 的每个子目录中(glob data/**/*.ttl)。

在每个包中包含每个 .ttl.xml 文件:

package_data = {'', ['*.xml', '**/*.xml', '*.ttl', '**/*.ttl']}

I also want to distribute all files from xmlboiler/core/data/assets/

data/assets 的方法相同,但省略了 globs 中的文件扩展名:

package_data={
'xmlboiler.core': ['data/assets/*', 'data/assets/**/*'],
}

关于python - setuptools 不分发我的数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com