scons的一个扩展,它支持对python脚本导入的依赖性跟踪。

PyScons的Python项目详细描述



==


pyscons
=


pyscons是一个与scons一起工作的工具。它通过以下两个命令之一安装到新环境中:


from pyscons import pytool
env=environment(tools=['default',pytool()])





from pyscons import pytool
env=environment()
pytool()(env)


三件事:

1.安装生成器:pyscript。
2。安装生成器:pyscons。
3。为python脚本安装新的扫描程序。

--


此生成器运行python脚本和模块。

首先,当
将模块作为带有'-m'选项的脚本运行时,它将自动找到引用的".py"文件。例如,以下代码将以脚本形式运行模块,并将相应的文件添加到依赖项中:


env.py script("out",["-m timeit","myscript.py"],"python$sources>;$target")


其次,它将命令字符串默认为"python$sources",并使用"captu"re"
关键字参数,可以自动附加适当的字符串,以捕获
输出或错误(或两者)到目标::


(["out","err"],["-m timeit","myscript.py"],capture="both")


就像命令一样,可以使用多个步骤创建文件:


env.pyscript("out","step1.py","step2.py"],
["python${sources[0]}>;temp","python${sources[1]}>;$target",delete("temp")])

pyscons(实验性的)
——

这与sconscript不同,sconscript的功能类似于include。相反,py scons生成一个新的scons进程。
生成一个新进程允许在不触发重建的情况下自动删除临时文件。

rt pysconssetup
targets,sources,basename=pysconssetup()


pyscript(temp,["step1.py"]+sources,capture="out")
pyscript(targets,["step2.py",temp],capture="out")

例如:

py scons(targets,sources,"my_scons.py",options="-j4")


options关键字中的字符串不会添加到命令签名中。应将确实影响输出的选项添加到sig\u options关键字,这些选项将添加到签名::


py scons(targets,sources,"my\u scons.py",options="-j4",sig\u options="--critical\u opt")

ts,但将立即删除。
这对于生成大型中间文件的生成器非常有用,这些文件应在不触发重建的情况下删除。这可能比为
少数特殊情况向命令函数传递列表要好:

1。pyscons支持并行执行多步骤子模块(如果将-j选项传递给派生scons)
2。pyscons在scons中创建了一个工作流环境(如pipeline pilot),使复杂的任务能够打包到scons文件中,以便在其他scons文件中使用。
3.py scons可以使用一个标志来打开和关闭中间文件删除:

pyscons(targets,sources,"my_scons.py",clean=false);保留中间文件

4。pyscons在构造命令签名时忽略"options"参数,使您能够在不触发重建的情况下更改参数(例如-j进程数)。

不是从繁殖的烤饼上繁殖出来的。在本例中,
"step1.py"和"step2.py"将不会被跟踪,对它们的更改也不会触发重建。这里有一个技巧,在"my scons.py"中添加以下两行:


为了帮助区分以这种方式运行的文件
(由pyscons调用),还可以为它们提供扩展名".scons"或".pyscons"。
在本例中,这相当于将"my_scons.py"重命名为"my_scons.scons"

——


此扫描仪使用modulefinder模块查找具有"py"扩展名的所有源中的所有导入依赖项。它的构造函数可以有两个选项:

1。filter_path:一个可调用对象(或none),它接受一个路径作为输入,如果scons应将此文件作为依赖项包含,则返回true
;如果应忽略此文件,则返回false
。默认情况下,此变量变为一个函数,确保不会跟踪系统python模块或站点包中的模块。要跟踪所有文件,请使用"lambda p:true"。

2。递归:使用true(默认)或false,它启用或禁用递归依赖性
跟踪。

例如,要在非递归扫描程序中跟踪所有文件(包括系统导入),请在sconstruct中使用以下安装代码:


ve导入不起作用。这似乎是modulefinder包中的一个错误,我不知道如何修复它。_主页:http://swami.wustl.edu/
…_域名:http://www.scons.org/

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

推荐PyPI第三方库


热门话题
java Maven无法识别安装在Ubuntu外壳上的$java_HOME jdk   java如何防止可运行程序在其中一个抛出异常时执行   java Listview在按下项时不触发   如何在WindowsPhone8中使用JavaRESTWebService?   java在spring引导下使用多个dispatcher servlet/web上下文   java为什么在删除容器的绝对大小时不绘制GEF子项?   java在hibernate实体中保留DB约束是好的   JavaSpring选择最高优先级bean   ArrayList<Class>java字符串[]   有向加权边图的Java邻接表实现   字母数字字符串的java Tesseract配置:混合2、Z、6和G   如果输入为空,则带有EditText的java警报对话框将关闭   jsp上的java Struts 2动作响应   java获取IndexOutOfBundException Android   scala AWSJAVASDK:解压缩大小必须小于262144000字节