使用setuptools的实用程序类和方法

setupext的Python项目详细描述


setupext
==


此模块包含简化编写python安装脚本(setup.py)的实用方法。


building c extensions:请参见setupext/doc/setup sample.py

-指定c源的位置
-指定共享库名称
-指定特定的c要编译的源文件

bundle additional files with package-using get \dir \tree()

-include and install c sources under python module directory
-include readme,license and o ther files under python module directory

add a list of shell commands or python cal在安装的不同阶段执行的标签:


-build
-build\\u clib
-build\\u ext
-build\\u py
-build\\u scripts
-install\\u data
-install\\u lib
-install\\u headers


python代码(可调用)可以在每个阶段之前或之后运行。
请注意,如果要使用触发器功能,则需要在包中包含此包。


ns和package layout
==


此setup.py采用以下布局。
顶层-->;python package name




——许可证——Github ETC的典型许可证,但不是必需的
/>指向Data_dirx下的文件的硬链接,使其保持在顶层
/>——顶层模块2py
数据目录1
数据目录2文件1-例如许可证2-例如readme.rst


红色库(如果有)将被安装
-附加数据(如果有)(data-dirs)将被安装

-设置包

-在additional keyword args to setup()下
-在addl-kwargs中添加py-modules=[]

-在c扩展详细信息下-如果包包含c扩展n:

-设置libpath
-设置c\\u src \-list
-设置ext \-u模块


c扩展名详细信息
====


或者只需设置一个扩展名的简单情况,您只需设置:




libname-->;str:shared library filename without'.so'
c戥src戥files-->;c戥dir中str:c源文件名的列表

=============


i使用package\-dir和package\-u数据指定安装附加的
文件,这些文件是:

-顶层下目录中的文件
-不会自动包括或安装,因为:

-py\-modules directive
-packages=find\_ packages()指令
-c扩展所需的源代码
示例:

-ship并在模块目录下安装c源代码
-ship并安装任何其他文件-例如:

-documentation
-license



-不需要清单。in
-不需要包含包数据指令
-不需要setupext.custominstalldata类中的代码

准备步骤:

-如果包包含C源扩展:
-将C源放在顶层下的目录中
|-将上面的c\\-dir设置为顶层下的目录名

-使用顶层下的数据创建其他目录
-如果希望包含顶层(顶层以上)中的文件,请将这些文件硬链接到顶层下的目录-例如:

-license
-readme.rst

-或者,将这些文件从
顶层下的目录硬链接到顶层,以便可以在顶层看到这些文件
(例如在github中)

-将数据目录设置为要包含

自定义步骤的顶层下的目录列表=====


若要添加要在安装期间的不同步骤执行的shell命令或python可调用文件列表,请修改setupext.config,如下所示:




-setupext.config是一个dict,其键表示安装步骤
-支持的步骤在安装程序中ext.known_steps(str列表)
-setupext.config的每个元素本身就是一个dict,具有以下键:
-"pre":dict
-"post":dict

"pre"和"post"dict可以选择包含以下键:
cmdlist-->;list
每个元素都必须是以下元素之一:
str:要与子进程一起执行的shell命令。call
该命令是在shell=true的情况下执行的
不添加其他命令行参数
callable:将使用以下参数
args=(caller):caller是调用类的实例
通常是distutils.cmd.command的实例
pre_post=x:x in['pre','post']
callable可以检索步骤名using
args[0].get_command_name()
如果未设置CmdList,或者CmdList为[]或无,则会忽略相应的
pre/post dict

请参阅pydoc setupext.run_in_order

show_output-->;boolean:di显示外壳命令的stdout
对于可调用项忽略
默认值:true

show_err-->;布尔值:显示外壳命令的stderr(对于stderr)
对于可调用项忽略
默认值:true

ignore_错误-->;布尔值:如果
shell command或callable引发异常或
shell command返回非零返回代码,则继续执行cmdlist的下一个元素


_err和ignorer应用于所有元素
/>
必须在执行安装程序时定义可调用项。py

请注意,只有在执行相应的
步骤时才会执行cmdlist-例如:
-如果禁用字节编译,则install-lib不会运行
-如果包未定义c扩展,构建扩展不会运行

示例:
==

r/>-在安装生成(步骤:生成)开始之前运行shell \命令1和callable \1
代码::python

#shell_command_1将返回一个非零的返回代码
shell_command_1='echo"开始生成";uname--nosuchoption'
shell_command_2='echo"生成外部已完成"'


args[0].get_command_name(),
kwargs.get('pre_post','unknown')

setupext.config['build']['post']['show_err']=false
shell_command_1将生成stderr输出并返回非零代码
#如果shell命令中有stderr,将显示(在stderr上)

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

推荐PyPI第三方库


热门话题
算法图形。路径方向Java枚举方向问题无法使用EAST   Java:将字符串转换为特定语言环境   javaspringboot&Thymeleaf为后续调用保存搜索表单的最佳方法   mapreduce程序中未调用java reducer   java如何将url中的Gif文件保存到手机中?   如何在JavaSwing中使用[Esc]键最小化JInternalFrame?   java创建了一个包含100个按钮、80个空按钮和20个随机按钮的网格布局   如何在java中使用数组对2d字符串数组中的每一行进行排序。分类   java无法识别的SSL消息,纯文本连接?例外   为什么Java编译器允许在抛出部分列出方法无法抛出的异常   java将预测数组添加到训练数组   java从Ajax调用获取响应文本   使用改型2的java应用程序等待一分钟后退出