setuptools不分发我的数据文件

2024-04-26 21:06:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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之后,构建目录不包含任何*.xml*.ttl文件。你知道吗

我的错误是什么?你知道吗

我还想分发xmlboiler/core/data/assets/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。为什么?你知道吗


Tags: pycoreboilerpackagedatapackagessetupscripts
1条回答
网友
1楼 · 发布于 2024-04-26 21:06:40

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

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

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

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

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

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

这将包括data目录(globdata/*.ttl)中的每个.ttl文件和data(globdata/**/*.ttl)的每个子目录中的每个.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/**/*'],
}

相关问题 更多 >