2013-07-15 63 views
1

我在SCons中创建了一个特殊构建器,用于从需求文件创建Python中的virtualenv。如果给定一个标志--virtualenv,我想设置一个名为HOSTPYTHON的环境变量,它改变了scons用于构建和测试我其余代码的Python。在SCons中首先运行构建

这意味着我需要virtualenv构建器始终首先运行并在所有其他构建器之前运行。我怎样才能做到这一点?

+0

仅当在命令行上给出--virtualenv时是否要更改HOSTPYTHON标志,还是应该依赖于需求文件是否已更改? – Brady

+0

只有在给出'--virtualenv'的情况下。但没关系,我拿到了这部分,我只是在这里列出来澄清我的意图。重要的一点是让构建先运行。 –

+0

该标志仅指出其余构建是否使用此环境,但如果需求文件发生更改(无论此标志如何),则应构建该标志。 –

回答

0

而不是将virtualenv定义为构建器,您可以考虑将其作为一个简单的Python函数,并使用SCons Execute()函数运行它。执行将始终在任何构建者之前执行。

我不知道如何更改构建中的SCons使用的Python版本,因此您可能需要运行SCons两次。第一次,请检查--virtualenv命令行参数,如果存在调用Execute()(或始终调用Execute()并在内部检查cmd行),然后Exit()

+0

无论需求文件是否更改,这将运行构建器,这将花费大量时间。 –

+0

这显然是可能的,因为你可以手动取得所有的目标,并取决于这个构建。问题是,是否有一种方便的方式来做到这一点。 –

+0

@AirirRachum,我不明白它取决于需求文件。如果是这样,那么你是对的。我问OP了。 – Brady