打包 Python 应用程序时,通常需要在发行版中包含其他数据文件。在 setuptools 和 distutils 中,package_data 选项就是用于此目的。然而,一些用户在尝试使用这种方法包含包数据时遇到问题。
根据文档,setup() 函数应配置如下以包含包数据:
setup( name='myapp', packages=find_packages(), package_data={ 'myapp': ['data/*.txt'], }, include_package_data=True, zip_safe=False, install_requires=['distribute'], )
此配置指定打包应用程序时应将扩展名为 .txt 的文件包含在 myapp/data 目录中。然而,一些用户可能会发现这种方法不起作用。
提供的解决方案表明问题出在 package_data 的行为上。请注意,package_data 仅在构建二进制包时有效(使用 setup.py bdist ...)。但是,在构建源包时(使用 setup.py sdist ...)它不起作用。
建议不要依赖 package_data,而是使用 MANIFEST.in 文件。 MANIFEST.in 文件提供了应包含在二进制和源发行版中的文件列表。这确保用户可以创建两种类型的发行版并包含必要的数据。
以上是为什么'package_data”适用于二进制发行版,但不适用于'setuptools/distutils”中的源发行版?的详细内容。更多信息请关注PHP中文网其他相关文章!