setup.py脚本的帮助程序模块。

setuphelper的Python项目详细描述


这个python模块将使您的安装脚本更简单 通过尽可能多地自动化“样板文件”来编写 通常都是这样的。而不是调用setup 函数的关键字参数列表很长,您只需设置 设置脚本中的全局变量,然后调用 setup_main function,传递globals()作为其参数。 (setuphelper setup.py脚本本身说明了这种用法。)

helper模块负责翻译 将变量转换为关键字参数,包括自动 推导并产生许多论点 指定一组更简单的数据。作为奖励,如果你是 使用python的标准distutils,setuphelper提供(非常 基本!)支持requires关键字,下载并 为您安装所需的软件包,只要下载它们 pypi上提供了url。(也可以指定本地 通过设置环境将目录作为“存储库” 变量PYPI_LOCAL指向它–请参见CHANGES 有关详细信息,请参阅源存档中的文件。)此功能 当前不支持 包名称(除非您使用的是setuptools,否则 允许这样做–见下文)。

(注意,Python2.5和更高版本的distutils包允许 分发元数据中的requires关键字,但是 不是用它来为你安装任何东西。当然 一些distutils替换(如setuptools)确实提供了这一点 功能;如果使用setuptools,则可以设置 变量__distutils_pkg__'setuptools'和 setuphelper将使用setuptools的支持而不是它自己的支持, 它有一些附加功能,比如允许 所需包的说明符。setuphelper还添加 requiresprovidesobsoletes关键字到 使用^{tt13}时的包元数据$ 使用python版本的命令<;2.5;换句话说,它提供 您支持元数据版本1.1,即使您的python 版本没有。)

因为setuphelper拥有确定 源或二进制分发文件中应该包含什么, 它每次运行时都会自动生成MANIFEST.in,因此 必须手动维护MANIFEST.in文件(如果 是的,它无论如何都会被覆盖)。即使不是 除非您正在运行 作为一个分发命令,setuphelper每次都执行它,因为 检查其输出通常可以帮助您调试 设置脚本中的变量定义。(至少,它有 当然有助于me做到这一点!)

使用setuphelper作为安装程序

此发行版包含一个脚本setuphelper,您可以 可用于利用setuphelper的requires关键字支持 作为安装程序使用。命令行参数 脚本被视为要安装的需求列表, 脚本使用setuphelper下载并安装它们, 就像它们在setup.py脚本中列出一样。如果你 希望使用setuptools'easy_install支持 技术,使用命令行选项--use-setuptools (缩写-s)。

因为这个脚本使用requires关键字功能 在setuphelper中,它有上面提到的限制,即 版本说明符当前可以在包名称之后使用。

安装后脚本支持

另一个好处是,setuphelper允许您自动化 运行安装后脚本;只需设置__post_install__ 要运行的脚本名列表中的setup.py变量 从子shell(这是使用os.system完成的,因此它具有 python命令的限制)。最好允许 从setup.py运行安装后脚本,以便setuphelper 可以确保通过 一旦他们来了就给他们打电话python setup.py install。 打开包装。(请注意,如果使用的是setuptools,则此功能 不起作用,因为setuptools实际上不运行 python setup.py install安装软件包。未来 虚拟企业setuphelper的rsion可能会解除此约束。)

注意,setuphelper会修补中的install_scripts命令 distutils以捕获正确的脚本安装目录。 这可以确保安装后脚本的正确版本 (即刚刚安装的那个)即使有 在您的路径上有多个副本。

安装

当然,要安装setuphelper,只需键入:

$ python setup.py install

在解压setuphelper存档的目录中。 但是,由于setuphelper由安装脚本使用,您将 可能希望将它与您的setup.py一起包含在 python项目的源文件以及 安装在您自己的系统上。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxrpc的Java eclipse WebService客户端   java编程方式在对象上写入名称   java Spring批处理:重试后跳过   java Android错误:错误:任务执行失败:应用程序:transformClassesWithDexForDebug'   带有清单文件nullPointerException的java Android元数据   spring Java Quartz调度作业停止运行   JavaMockito:如何在不调用实际方法的情况下,模拟带有参数和无效返回类型的静态方法?   java Tomcat连接池问题无法在关闭的连接上调用方法   java如何交换列表中的项目?   java如何停止线程并通过Toast在线程中正确显示文本?   java为什么连续写入OutputStream时偏移量0不会导致重复字节?   java我无法生成头文件   不兼容的返回类型错误java   修改值后键值对的java Jolt转换规范   java有自动更新Javadoc的工具吗?   java线程如何在ints自身实例类中共享变量   java继承一个非gwt模块   java Hibernate xml配置   使用netty4异步调用的java链接HTTP请求响应