跳转到主要内容

STScI的一些软件包使用的distutils打包相关工具

项目描述

简介

此软件包包含用于打包STScI的一些Python项目的工具;具体包括stsci_pythonAstrolib

它目前主要由一些用于与distutils2/packaging和/或d2to1一起使用的setup_hook脚本以及一个用于与distribute一起使用的自定义easy_install命令组成。

本包不是供普通消费使用的,但它可能值得一看,了解如何使用自己的包做某些事情,但具体情况可能因人而异。

功能

钩子脚本

目前本包的主要功能是几个设置钩子脚本。在distutils2中,设置钩子是一种在运行任何pysetup命令开始时执行的脚本,可以修改从setup.cfg读取的包配置。还有命令前和命令后钩子,仅在运行特定设置命令(例如build_ext、install)之前/之后执行。

stsci.distutils.hooks.use_packages_root

如果在使用setup.cfg中的[files]部分的packages_root选项,此钩子会将该路径添加到sys.path,以便在设置中使用包中的模块导入和使用。即使没有指定packages_root,也可以使用此功能——在这种情况下,它将''添加到sys.path。

stsci.distutils.hooks.version_setup_hook

创建一个名为version.py的Python模块,该模块目前包含四个变量

  • __version__(发布版本)

  • __svn_revision__(由svnversion命令返回的SVN修订信息)

  • __svn_full_info__(由svn info命令返回的信息)

  • __setup_datetime__(setup.py最后运行的日期和时间)。

这些变量可以导入包的__init__.py中进行调试。version.py模块仅在包的__init__.py中导入version模块时创建。请注意,通常这比直接将这些变量写入__init__.py更可取,因为它提供了更多控制,并且不太可能在__init__.py中意外地破坏事物。

stsci.distutils.hooks.version_pre_command_hook

与version_setup_hook相同,但设计为用作命令前钩子。

stsci.distutils.hooks.version_post_command_hook

version_pre_command_hook的补充。这将删除在构建过程中创建的任何version.py文件,以防止它们在SVN工作副本中造成杂乱(请注意,然而,version.py文件不会被从build/目录中删除,因此仍保留其副本)。如果当前目录不是SVN工作副本,则不会删除。例如,从源tarball提取的源代码将保留。

stsci.distutils.hooks.tag_svn_revision

一个设置钩子,将当前工作副本路径的SVN修订版本添加到包版本字符串中,但只有当版本以.dev结尾时。

例如,mypackage-1.0.dev变为mypackage-1.0.dev1234。这符合PEP 386标准化的版本字符串格式。

应将此用作egg_info命令的tag_svn_revision选项的替代品。此钩子与packaging/distutils2更兼容,distutils2不包括任何VCS支持。此钩子也更具灵活性,因为它根据版本字符串中是否存在.dev来打开/关闭修订号,因此不会自动添加到最终版本中的版本。

此钩子需要svnversion命令可用才能工作。它不会直接检查工作副本元数据。

stsci.distutils.hooks.numpy_extension_hook

这是build_ext命令的命令前钩子。要使用它,请向setup.cfg中添加[build_ext]部分,并将其添加到其中

pre-hook.numpy-extension-hook = stsci.distutils.hooks.numpy_extension_hook

此钩子必须用于构建使用Numpy的扩展模块。此钩子的主要副作用是将正确的numpy包含目录添加到include_dirs。要使用它,请将“numpy”添加到每个需要numpy构建的扩展模块的“include-dirs”选项中。值“numpy”将被替换为实际的numpy包含路径。

stsci.distutils.hooks.is_display_option

这实际上不是一个钩子,而是一个有用的实用函数,可以在编写其他钩子时使用。基本上,如果setup.py带有“显示选项”例如–version或–help运行,它将返回True。这可以用来防止您的钩子在类似情况下运行。

stsci.distutils.hooks.glob_data_files

安装_data命令的预命令钩子。允许使用glob.glob()理解的文件名通配符在data_files选项中使用。必须使用此钩子才能具有此功能,因为它通常不存在于distutils中。

此钩子还确保数据文件相对于包路径安装。data_files通常不应以此方式安装,但此功能对于一些特殊情况是必需的。

命令

build_optional_ext

这作为默认built_ext命令的可选替代品,用于编译C扩展模块。它的目的是允许扩展模块是可选的,以便如果它们的构建失败,其余的包仍可以构建和安装。当扩展模块不是绝对必需使用包时,可以使用此功能。

要使用此自定义命令,请将以下内容添加到

commands = stsci.distutils.command.build_optional_ext.build_optional_ext

在您的包的setup.cfg的[global]部分下。然后,为了将单个扩展模块标记为可选,在该扩展的setup.cfg部分下添加

optional = True

可选地,您还可以通过添加以下内容来添加自定义失败消息

fail_message = The foobar extension module failed to compile.
               This could be because you lack such and such headers.
               This package will still work, but such and such features
               will be disabled.

变更日志

0.3.7 (2013-12-23)

0.3.6 (2013-11-21)

  • 修复了在0.3.5中引入的Python 3语法错误。这可能发生在设置很早的时候,以至于在2to3运行包的其余部分之前就放弃了。

0.3.5 (2013-11-18)

  • 修复了在Python 2系统上尝试使用已安装但从未使用过的lib2to3安装easy_install时可能出现的神秘问题。

0.3.4 (2013-07-31)

  • 将v0.3.3中添加的__loader__检查更新为仅在Python >= 3.3上执行,因为该问题不适用于较旧的Python版本。

0.3.3 (2013-07-25)

  • 更新了由version_setup_hook生成的version.py模块中的导入时SVN版本更新机制,以避免在不是包的开发版本中运行。这节省了在用户系统上安装已发布包时导入的时间。

  • 为Python 3.3上的一个可能导致stsci.distutils在安装期间崩溃的错误添加了一个解决方案。

0.3.2 (2013-03-27)

  • 修复了版本钩子中的错误,该错误可能发生在svnversion命令失败时。

  • 更新了由版本钩子生成的version.py模块的模板,以便from .version import *对应用程序有效。

  • 在version.py中添加了一个__vdate__变量,它可能包含通过在setup.cfg的[metadata]部分中指定vdate选项指定的发布日期字符串。

  • 在version.py中添加了一个stsci_distutils_version变量,其中包含生成该文件的stsci.distutils的版本——主要用于调试目的。

  • 0.3.1版本中添加了新的zest.releaser钩子,以确保创建源分发为tar.gz文件而不是zip文件——这在0.3.1的变更日志中省略了。

  • 0.3.2中将tar.gz zest.releaser钩子更新为仅适用于stsci包。

0.3.1 (2012-06-28)

  • 修复了一个bug,该bug导致svn相关程序的console输出被假定为ASCII,导致在非英语系统上可能发生崩溃。

0.3 (2012-02-20)

  • glob_data_files钩子改为install_data命令的预命令钩子,而不是设置钩子。这是为了支持需要数据文件具有相对目标路径的附加功能,以便相对于软件包的安装路径(即site-packages)进行安装。

  • 放弃了对easier_install自定义命令的支持,并已弃用。尽管它仍然可以使用,但可能不再用于stsci_python软件包。

  • 添加了对build_optional_ext命令的支持,该命令替换/扩展了默认的build_ext命令。有关更多详细信息,请参阅README。

  • 添加了tag_svn_revision设置钩子,作为egg_info命令中setuptools特定tag_svn_revision选项的替代。这个新钩子比旧的tag_svn_revision选项更容易使用:如果版本字符串中包含.dev,它将自动启用,否则将禁用。

  • 已用version_pre_command_hookversion_post_command_hook分别替换了svn_info_pre_hooksvn_info_post_hook。但是,还添加了一个具有相同目的的新version_setup_hook。它通常更容易使用,并且将提供更一致的结果,因为它会在每次运行setup.py时运行,而不管使用哪个命令。stsci.distutils本身使用此钩子–请参阅setup.cfg文件和stsci/distutils/__init__.py中的示例用法。

  • 不是创建一个svninfo.py模块,新的version_钩子创建了一个名为version.py的文件。除了包含在svninfo.py中的SVN信息外,它还包括一个__version__变量,供软件包的__init__.py使用。这允许在源代码中包含一个硬编码的__version__变量,而不是使用pkg_resources获取版本。

  • version.py中,以前命名为__svn_version____full_svn_info__的变量现在命名为__svn_revision____svn_full_info__

  • 修复了在安装stsci.*命名空间包中的其他包时使用stsci.distutils的bug。如果stsci.distutils尚未安装,并且通过setup_requires选项由distribute自动下载,那么stsci.distutils将无法导入。这是因为当前nspkg(nspkg)机制的工作方式,属于nspkg的所有包都必须在初始导入时位于导入路径上。

    例如,当安装stsci.tools时,如果在安装时间从源代码中导入stsci.tools,但在下载并添加到路径之前导入stsci.distutils,则stsci包已被导入并且无法事后扩展以包括stsci.distutils的路径。处理这个问题似乎最简单的方法是删除stscisys.modules,这将强制它重新导入,现在它的__path__扩展到包括stsci.distutil的路径。

  • 添加了zest.releaser钩子,用于调整开发版本字符串模板,并将新版本上传到STScI的本地包索引。

0.2.2 (2011-11-09)

  • 修复了实际setuptools安装中关于issue205 bug的检查;在此之前它只在distribute上工作。setuptools在版本0.6c10之前的版本中都有issue205 bug。

  • 改进了针对issue205错误的修复,特别是在setuptools方面。在0.6c10之前,setuptools在沙箱化之前也没有备份sys.modules,这导致严重问题。事实上,问题如此严重,仅向当前沙箱添加sys.modules备份是不够的:实际上需要monkeypatch setuptools.sandbox.run_setup,以便任何后续调用也备份sys.modules。

0.2.1 (2011-09-02)

  • 修复了依赖关系,以便setuptools是必需的,但具体是'distribute'。之前,如果用户已安装plain setuptools但没有安装distribute,则安装可能会失败。

0.2 (2011-08-23)

  • 首次公开发布

项目详情


下载文件

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

源分布

stsci.distutils-0.3.7.tar.gz (48.8 kB 查看哈希值)

上传时间

支持