可能最好的方法是使用
setuptools
package_data指令。这确实意味着要使用
setuptools(或
distribute)而不是
distutils,但这是一个非常无缝的“升级”。
这是完整(但未经测试)的示例:
from setuptools import setup, find_packagessetup( name='your_project_name', version='0.1', description='A description.', packages=find_packages(exclude=['ez_setup', 'tests', 'tests.*']), package_data={'': ['license.txt']}, include_package_data=True, install_requires=[],)
请注意此处的关键行:
package_data={'': ['license.txt']},include_package_data=True,
package_data是
dict包名称(空=所有包)到模式列表(可以包含glob)的形式。例如,如果您只想指定包中的文件,也可以这样做:
package_data={'yourpackage': ['*.txt', 'path/to/resources/*.txt']}
此处的解决方案绝对是 不
py使用
.py扩展名重命名非文件。
有关更多信息,请参见Ian Bicking的演示文稿。
更新:另一种[更好]的方法如果您只想控制源代码分发(
sdist)的内容并使文件位于软件包外部(例如,顶级目录),则另一种有效的方法是添加
MANIFEST.in文件。有关此文件的格式,请参见Python文档。
自编写此回复以来,我发现使用
MANIFEST.in通常是一种较为轻松的方法,只需确保您的源分发(
tar.gz)具有所需的文件即可。
例如,如果您要包括
requirements.txt来自顶层的目录,则递归包括顶层“数据”目录:
include requirements.txtrecursive-include data *
不过,为了在安装时将这些文件复制到site-
packages内软件包的文件夹中,您需要提供
include_package_data=True此
setup()功能。有关更多信息,请参见添加非代码文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)