SCons:如何在已使用 VariantDir 调用的 SConscript 中导入 Python 模块?

Jar*_*ock 5 scons python-import

我的构建结构如下:

SConstruct
subdir/SConscript
subdir/module/__init__.py
Run Code Online (Sandbox Code Playgroud)

SConstructsubdir/SConscript作为子公司调用:

# SConstruct
SConscript('subdir/SConscript')
Run Code Online (Sandbox Code Playgroud)

subdir/SConscript进口module

# subdir/SConscript
from module import foo
do SConsy stuff with foo()...
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到我使用variant_dirwith subdir/SConscript

# SConstruct
SConscript('subdir/SConscript', variant_dir='subdir/build', duplicate=0)
Run Code Online (Sandbox Code Playgroud)

问题是import失败,因为module不再位于路径中,该路径已被 更改variant_dir

SCons 或 Python 是否有解决此问题的标准方法?我知道特殊site_scons目录,但看来该目录必须存在于 root 的顶层SConstruct,并且我想将subdir特定文件保留在subdir.

Tor*_*ten 4

在您的模块的项目根目录中使用 site_scons 目录。例如我有模块xxx,他被放置在:root/site_scons/xxx/__init__.py。现在,我可以在所有 SConscript 文件中导入 xxx。