Scons 在SCON中运行构建优先

Scons 在SCON中运行构建优先,scons,Scons,我在SCons中创建了一个特殊的构建器,用于从需求文件在Python中创建virtualenv。如果给定一个标志-virtualenv,我想设置一个名为HOSTPYTHON的环境变量,它会更改scons用于构建和测试其余代码的Python 这意味着我需要virtualenv构建器始终在所有其他构建器之前运行。我怎样才能做到这一点?,而不是将VilalEnv定义为一个生成器,你可以考虑让它成为一个简单的Python函数,并使用sCONS函数运行它。Execute将始终在任何构建器之前执行 我不知道

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

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

,而不是将VilalEnv定义为一个生成器,你可以考虑让它成为一个简单的Python函数,并使用sCONS函数运行它。Execute将始终在任何构建器之前执行


我不知道如何在构建过程中更改SCONS所使用的Python版本,因此可能需要两次运行sCONS。第一次,检查-virtualenv命令行参数,如果存在,则调用Execute或始终调用Execute并在内部检查cmd行,然后退出。

这将运行生成器,无论需求文件是否更改,这将占用大量时间。这显然是可能的,因为您可以手动获取所有目标,并使它们依赖于此构建。问题是是否有一种方便的方法可以做到这一点。@AmirRachum,我不明白这取决于需求文件。如果是,那么你是对的。我向OP询问了这一点。是否仅当命令行上给出了-virtualenv时才更改HOSTPYTHON标志,还是还应取决于需求文件是否已更改?仅当给出了-virtualenv时。但没关系,我得到了这一部分,我只是把它包括在这里来澄清我的意图。重要的一点是首先运行构建。该标志仅说明其余构建是否使用此环境,但如果需求文件发生更改,则应构建该环境,而不管该标志如何。为了澄清,这是一个pip freeze格式的requirements.txt文件,然后我使用该文件在virtualenv中安装软件包。