“Python Distribute”指南(位于Python-Distribute.org,但注册已经失效)告诉我要包含doc/txt
文件,并且.py
文件被排除在MANIFEST.in
文件中
sourcedist documentation告诉我只有sdist使用MANIFEST.in
,并且只包含您指定的文件和要包含的.py
文件。它还告诉我使用python setup.py sdist --manifest-only
来生成MANIFEST
,但是python告诉我这不存在
我很欣赏这些来自不同版本的python,并且发行系统在
完全混乱,但假设我使用的是python 3和setuptools
(新的包括distribute但现在称为setuptools的新工具,而不是旧的setuptools,旧的setuptools已经被弃用,因为distribute工具只会被带回到distribute并被重命名为setuptools…..)
我遵循“标准”文件夹结构和setup.py
文件
MANIFEST.in
吗?
回复:“我需要舱单吗?
不,您不必使用
MANIFEST.in
。distutils
和setuptools
都包含在源代码中 分发包setup.py
模块中提到的所有文件,包python文件,README.txt
和test/test*.py
。如果这是您希望在分发包中拥有的所有内容,您可以 不必使用MANIFEST.in
。如果要操作(添加或删除)要包含的默认文件,则必须使用
MANIFEST.in
。回复:里面应该有什么?
程序很简单:
确保在您的
setup.py
中包含(通过setup
参数)您认为对程序运行很重要的所有文件(模块、包、脚本…)如果要添加或排除某些文件,请澄清。如果两者都不需要,则不需要使用
MANIFEST.in
。如果需要
MANIFEST.in
,请创建它。通常,您会添加tests*/*.py
文件,README.rst
如果您不使用README.txt
,docs
文件,如果需要的话,可能还会添加一些测试套件的数据文件。例如:
要测试它,请运行
python setup.py sdist
,并检查在dist/
下创建的tarball。什么时候这些不同的包装系统
对比今天和两年前的情况——情况要好得多——
setuptools
才是前进的方向。你可以忽略这样一个事实,distutils
有点坏,是setuptools
的低级基础,因为setuptools
应该把这些东西藏起来。EDIT:我使用的最后几个项目
pbr
用于构建带有三行setup.py
的分发包,其余项目位于setup.cfg
和requirements.txt
中。不需要关心MANIFEST.in
和其他奇怪的事情。即使这个包需要更多的文档。见http://docs.openstack.org/developer/pbr/旧问题,新答案:
不,你不需要
MANIFEST.in
。然而,要想让setuptools
达到您(通常)的意思,您确实需要使用setuptools_scm
,它在两个关键位置扮演MANIFEST.in
的角色:sdist
命令时打包所有相关文件(其中所有相关文件都定义为“受源代码管理的所有文件”)include_package_data
将包数据包含在build
或bdist_wheel
中时。(同样:受源代码管理的文件)对
MANIFEST.in
的历史理解是:当您没有源代码管理系统时,您需要一些其他机制来区分“源文件”和“恰好位于工作目录中的文件”。但是,您的项目受源代码管理(对吗?)所以不需要MANIFEST.in
。More info in this article。相关问题 更多 >
编程相关推荐