setuptools不会分发我的数据文件

时间:2018-08-21 05:13:19

标签: python python-3.x setuptools

我在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/


我不知道它是如何工作的:

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。为什么?!

1 个答案:

答案 0 :(得分:1)

<if condition='isNull("logs.dir")'> <then> <!-- in-IDE appenders --> </then> <else> <!-- standard appenders --> </else> </if> 是程序包名称到文件或文件glob的映射。这意味着

package_data

将包含位于任何软件包目录中的所有以package_data = {'', ['*.xml', '*.ttl']} .xml结尾的文件,例如.ttlxmlboiler/file.xml等。但是,它将不包含文件{ {1}},因为它位于不是软件包目录的xmlboiler/core/file.ttl中(不包含xmlboiler/core/data/interpreters.ttl文件)。为此,您应该使用正确的文件路径:

data

要在__init__.py下包含每个package_data = {'xmlboiler.core', ['data/interpreters.ttl']} 文件:

.ttl

这将包括xmlboiler/core/data目录中的每个package_data = {'xmlboiler.core', ['data/*.ttl', 'data/**/*.ttl']} 文件(全局.ttl)和data每个子目录中的每个data/*.ttl文件(全局{{1 }}。

要在每个软件包中包含每个.ttldata文件:

data/**/*.ttl
  

我还想分发.ttl

中的所有文件

.xml相同,但是省略了glob中的文件扩展名:

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