Installation 如何从SCON调用python setup.py安装?

Installation 如何从SCON调用python setup.py安装?,installation,scons,setup.py,Installation,Scons,Setup.py,我正在将构建从make转换为scons。该程序包含Python代码、CUDA和C++。在make结束时,调用“python setup.py install”在站点包中正确安装模块。我怎么称呼它呢?将working setup.py文件中的所有代码复制到scons脚本中似乎没有任何效果。查看scons。使用命令生成器,可以从命令行运行任何命令 env = Environment() ... py_install = env.Command('always.install', ['setup.py

我正在将构建从make转换为scons。该程序包含Python代码、CUDA和C++。在make结束时,调用“python setup.py install”在站点包中正确安装模块。我怎么称呼它呢?将working setup.py文件中的所有代码复制到scons脚本中似乎没有任何效果。

查看scons。使用命令生成器,可以从命令行运行任何命令

env = Environment()
...
py_install = env.Command('always.install', ['setup.py'],
                         'python setup.py install')
Alias('install', py_install)

在上面的示例中,我使用了一个虚拟的target always.install来强制install命令始终运行(有其他方法可以做到这一点,但这是另一个主题)。依赖项列表仅包含setup.py文件,您可能需要在此处列出其他依赖项。第三项是命令行。建议扫描图像;里面有很多有用的信息

谢谢你的回答。我已经使用了用户指南,它很有帮助。我几乎让它工作了。问题似乎是我需要在python目录中才能让setup.py正常工作。env.命令正在根目录中运行。我尝试在调用python之前放置一个“cd python”,但我得到一个错误,系统无法找到指定的路径。也许我应该把它变成一个构建器,这样我就可以使用chdir了,但是我们喜欢构建多线程,这似乎会导致一个问题。您可能认为cd到其他目录很容易,但事实并非如此。如果您的
env.Command()
是从
python/SConscript
运行的,请尝试以下操作:
env.Command(…,chdir=1)
。(如果您的
env.Command()
是从您的
SConstruct
运行的,那么
chdir=1
将没有任何有用的效果。)谢谢@Rob。您可以在SConstruct中使用
chdir='python'
和命令生成器。感谢大家的帮助。最后,我使用了一个快速的python函数,比如:def build_install(target,source,env):os.chdir('./python')os.system(“python setup.py install”)os.chdir(“…”)