跳转到主要内容

允许使用distutils2-like setup.cfg文件来为包的元数据与distribute/setuptools setup.py脚本

项目描述

简介

travis build status

d2to1(“d”代表“distutils”)允许使用distutils2-like setup.cfg文件为包的元数据与distribute/setuptools setup.py脚本。它通过提供一个包含所有包元数据的distutils2格式化setup.cfg文件,以及一个极简的setup.py来实现,该脚本将从setup.cfg中提取其参数。

注意:distutils2已被合并到CPython标准库中,现在称为“packaging”。此项目在更改最终确定之前开始。因此,所有对distutils2的引用也应假定是指packaging。

理由

我目前正在进行大量项目的包装重做。我希望所有这些项目都使用类似distutils2的setup.cfg文件,因为它们可能是未来的趋势,而且我总体上更喜欢使用它们,而不是使用可执行文件setup.py。因此,对distutils2的前向支持既是为了未来保障,也是因为使用平面文本文件描述项目元数据的美观。

然而,我不想让这些项目中的任何一个在安装时都要求使用distutils2——它太不稳定了,而且安装范围不广。因此,项目仍然可以使用熟悉的./setup.py install进行安装,例如。此外,我支持的一些包所需的所有用例目前还没有完全被distutils2支持。希望它们最终会通过distutils2核心或通过扩展来实现。但在此期间,d2to1将努力跟上distutils2分发的最新技术和“最佳实践”,同时增加它所缺乏的支持领域。

使用方法

d2to1需要使用distribute或setuptools的发行版。您的发行版必须包含类似distutils2的setup.cfg文件和一个最小的setup.py脚本。有关编写setup.cfg的详细信息,请参阅distutils2文档。一个简单的示例可以在d2to1的自身setup.cfg中找到(它使用自己的机制来安装自己)

[metadata]
name = d2to1
version = 0.2.12
author = Erik M. Bray
author-email = embray@stsci.edu
summary = Allows using distutils2-like setup.cfg files for a package's metadata with a distribute/setuptools setup.py
description-file =
    README.rst
    CHANGES.rst
home-page = http://pypi.python.org/pypi/d2to1
requires-dist = setuptools
classifier =
    Development Status :: 5 - Production/Stable
    Environment :: Plugins
    Framework :: Setuptools Plugin
    Intended Audience :: Developers
    License :: OSI Approved :: BSD License
    Operating System :: OS Independent
    Programming Language :: Python
    Programming Language :: Python :: 3
    Topic :: Software Development :: Build Tools
    Topic :: Software Development :: Libraries :: Python Modules
    Topic :: System :: Archiving :: Packaging

[files]
packages =
    d2to1
    d2to1.extern
extra_files =
    CHANGES.rst
    LICENSE
    ez_setup.py

[backwards_compat]
zip-safe = False
tests-require = nose

[entry_points]
distutils.setup_keywords =
    d2to1 = d2to1.core:d2to1
zest.releaser.prereleaser.middle =
    d2_version = d2to1.zestreleaser:prereleaser_middle
zest.releaser.postreleaser.middle =
    d2_version = d2to1.zestreleaser:postreleaser_middle

最小的setup.py应该看起来像这样

#!/usr/bin/env python

try:
    from setuptools import setup
except ImportError:
    from distribute_setup import use_setuptools
    use_setuptools()
    from setuptools import setup

setup(
    setup_requires=['d2to1'],
    d2to1=True
)

注意,指定d2to1=True非常重要,否则d2to1功能将不会启用。还可以将d2to1设置为'some_file.cfg'来指定要使用的setup.cfg文件的(相对)路径。但通常这个功能是不必要的。

如果向setup()传递了额外的参数,也应该可以正常工作,但应该注意,它们将被setup.cfg文件中的任何选项覆盖。

注意事项

  • setup.cfg中的requires-dist选项是通过distribute/setuptools的install_requires选项实现的,而不是通过正常的distutils中的损坏的“requires”关键字。

  • 目前还没有支持distutils2的所有功能。如果某些功能似乎不起作用,那么可能还没有实现。

  • 不支持distutils2资源,并且可能永远不会支持,因为它严重依赖于仅在Python 3.2及更高版本中可用的sysconfig模块。这是d2to1应该被视为过渡工具的一个领域。我真的不想像distutils2那样包含回滚。在此期间,package_data和data_files仍可以在setup.cfg的[files]部分中使用。

更改

0.2.12 (2015-07-16)

  • 修复了一个边缘情况,即当安装多个包时(即安装具有依赖项的包,其中一些可能也使用d2to1)时,我们会调用错误的Distribution类(d2to1需要从distutils获取未修补版本,在某些情况下)。

  • 将捆绑的six模块副本升级到当前版本(1.9.0)。这解决了d2to1与其他包不兼容的问题,这些包在设置过程中导入不同的six版本(较旧的six版本有与其他six实例争夺sys.modules的习惯,这在较新版本中得到修复)。

  • 升级到最新的ez_setup.py,以便在需要的情况下正确引导setuptools的最新版本。

  • 包含了一些杂项黑客技术,以使d2to1能够在Python 2.5上工作,尽管Python社区广泛放弃了Python 2.5支持。d2to1 v0.2.x版本将是最后一个继续支持Python 2.5的版本,因为测试它变得更为困难(而且可能不再值得这种开销)。

0.2.11 (2013-08-29)

  • 为了在需要时使用现代setuptools引导,已将 distribute_setup.py 替换为 ez_setup.py

  • 修复了几个Python 3特定的几个小问题。特别是,data_files选项可以以dict_items对象的形式传递给setup(),而不是通常期望的列表。

  • 添加了tox.ini(坦白说,我以为已经有一个了)。

0.2.10 (2013-04-10)

  • 在setup.cfg的[metadata]部分添加了对setup-requires-dist选项的支持。这类似于由PEP-426支持的Setup-Requires-Dist元数据字段,并使用setuptools的setup()中的setup_requires参数来实现。

  • 在setup.cfg的[backwards_compat]部分添加了对setuptools的setup()中的dependency_linksinclude_package_data参数的支持。

  • 当setup_hook调用sys.exit()时,不要显示SystemExit异常的跟踪信息。

  • 修复了在处理setup.cfg时出现异常时的异常格式化问题。

0.2.9 (2013-03-05)

  • 修复了0.2.8中支持的额外文件中的错误。确保猴子补丁不会安装多次,并且日志引用被正确封装。

0.2.8 (2013-03-05)

  • 改进了对设置packages_root选项的包的处理。也就是说,Python包不是直接在源树的根目录中,而是在某个子目录中。现在在处理setup.cfg和运行setup钩子时,将packages_root目录添加到sys.path前面。

  • 通过setup.cfg的[metadata]部分中的keywords选项添加了对Keywords元数据字段的支持。

  • 修复了由于缺少导入而导致的误导性异常,当缺少setup.cfg时会出现。

  • 将随软件包提供的distribute_setup.py升级到distribute 0.6.28的最新版本。

  • 添加了一些基本的函数测试,以及根据需要添加更多测试的基础设施。它们可以用nose运行,可能也可以用py.test运行,尽管py.test还没有经过测试。

  • 改进了钩子导入,使其与命名空间包更好地协同工作。

  • 在setup.cfg的[files]部分中添加了对extra_files选项的支持。这是一个来自distutils2的功能,为包括源分布中的附加文件提供了一个替代方案(它目前不支持通配符模式,但可能应该支持?)

  • 通过setup.cfg的[backwards_compat]部分添加了对setuptools的tests_require设置参数的支持。

  • 原生支持Python 3,无需2to3。这使得支持d2to1的Python 3测试更容易。

0.2.7 (2012-02-20)

  • 如果在setup.cfg中没有定义扩展模块或入口点,不要覆盖在setup.py中可能定义的任何扩展模块/入口点。

0.2.6 (2012-02-17)

  • 在setup.cfg的[entry_points]部分中添加了对setuptools入口点的支持——这只是为了向后兼容的目的,因为packaging/distutils2还没有一个标准的入口点系统替代方案。

  • 为setup.cfg添加了[backwards_compat]部分,用于支持setuptools/distribute支持但不是distutils2标准的其他选项。到目前为止,这里支持的唯一选项是zip_safe和use_2to3。(注意:packaging支持build命令的use-2to3选项,但如果尝试使用该选项,distutils将不会将其识别为有效的构建选项。)

  • 增加了对打包使用的新的(可能是最终的)扩展部分格式的支持。在此格式中,应使用如下格式的配置部分指定扩展:[extension: ext_mod_name],其中任何空白字符都是可选的。旧的格式使用=代替:,尽管仍然支持,但应考虑为过时。

  • 增加了对打包使用的package_data选项的新语法的支持(在打包中已被弃用,转而使用资源系统,但仍然支持)。新语法如下:

    package_data =
        packagename = pattern1 pattern2 pattern3
        packagename.subpack =
            pattern1
            pattern2
            pattern3

    也就是说,在package_data =之后,给出一个包的名称,然后是一个=,然后是任意数量的用空格分隔的通配符模式(或相对于包的实际文件名)。在此方案下,模式本身不允许有空格。

0.2.5 (2011-07-21)

  • 使调用pkg_resources.get_distribution()设置__version__更加健壮,因此它不会在例如VersionConflict错误时失败。

0.2.4 (2011-07-05)

  • 修复了在Python 3上安装时的一些错误。

0.2.3 (2011-06-23)

  • 将'setup_hook'重命名为'setup_hooks',因为现在包装模块中就是这样。增加了对多个setup_hooks的支持。

0.2.2 (2011-06-15)

  • 修复了DefaultGetDict中的错误,其中实际上没有在字典中保存返回的默认值,因此任何命令选项都会丢失。

  • 修复了当分发没有指定任何自定义命令时的KeyError。

0.2.1 (2011-06-15)

  • 在不使用monkey-patching和更可靠地重新实现了命令钩子(尽管它仍然是一个烧红的黑客技巧)。之前的基于monkey patch的解决方案如果d2to1被多次输入会中断,这可能在某些场景中发生。

0.2.0 (2011-06-14)

  • 版本提升,现在仅使用微版本号进行错误修复,因为我的主要功能目标已经完成。

0.1.5 (2011-06-02)

  • 在[files]部分添加了对data_files选项的支持。尽管这被认为是过时的,并且可能在某个时候被删除,但在没有资源支持的情况下可能很有用。

  • 添加了对命令预/后钩子的支持。警告:这稍微修改了distutils.dist.Distribution… :(

  • 添加了对requires-dist中PEP 345风格版本指定的(环境标记尚不支持)的(略微天真)支持。

  • 修复了在描述文件之间插入的新行不足的错误。

0.1.4 (2011-05-24)

  • 在setup.cfg的[global]部分添加了对在'commands'选项中指定的自定义命令类的支持。

  • 在setup.cfg的[global]部分添加了对在'compilers'选项中指定的自定义编译器的初步支持。此功能在distutils/setuptools/distribute中不存在,因此对其的支持是一个烧红的黑客技巧。它还没有真正测试过,只是看到自定义编译器在setup.py build_ext –help-compiler中显示出来,因此任何对此功能的实际测试都将受到欢迎。

0.1.3 (2011-04-20)

  • 添加了zest.releaser条目点,用于在setup.cfg文件中更新版本号;仅当您使用zest.releaser时才有用(否则无害,可能最终将该功能移入一个单独的产品)。

  • 尽管版本0.1.2在Python3中可以工作,但use_2to3没有被添加到setup.py中,因此必须手动运行2to3。

  • 修复了在项目中没有描述文件选项时的崩溃问题。

0.1.2 (2011-04-13)

  • 修复了自安装问题——如果尚未安装d2to1版本,则不会工作,这是由于使用了pkg_resources.require()

  • 添加了名义上的Python3支持。

  • 修复了setup.cfg中的'classifier'选项。

0.1.1 (2011-04-12)

  • 修复了当setup_hook失败导入时的无帮助错误消息。

  • 使d2to1能够使用自己的机制进行安装。

项目详细信息


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

d2to1-0.2.12.post1.tar.gz (36.0 kB 查看哈希值)

上传时间

由以下支持