setuptools 不分发我的数据文件
setuptools does not distribute my data files
我在 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
。为什么?!
package_data
是包名到文件或文件 glob 的映射。这意味着
package_data = {'', ['*.xml', '*.ttl']}
将包括任何包目录中以 .xml
或 .ttl
结尾的每个文件,例如 xmlboiler/file.xml
、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']}
这将包括 data
目录中的每个 .ttl
文件 (glob data/*.ttl
) 以及 data
的每个子目录中的每个 .ttl
文件 (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/**/*'],
}
我在 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
。为什么?!
package_data
是包名到文件或文件 glob 的映射。这意味着
package_data = {'', ['*.xml', '*.ttl']}
将包括任何包目录中以 .xml
或 .ttl
结尾的每个文件,例如 xmlboiler/file.xml
、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']}
这将包括 data
目录中的每个 .ttl
文件 (glob data/*.ttl
) 以及 data
的每个子目录中的每个 .ttl
文件 (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/**/*'],
}