我的构建结构如下:
SConstruct
subdir/SConscript
subdir/module/__init__.py
SConstruct
调用subdir/SConscript
作为子公司:
# SConstruct
SConscript('subdir/SConscript')
subdir/SConscript
导入module
:
# subdir/SConscript
from module import foo
do SConsy stuff with foo()...
在variant_dir
subdir/SConscript
使用# SConstruct
SConscript('subdir/SConscript', variant_dir='subdir/build', duplicate=0)
之前,此工作正常。
import
问题是module
失败,因为variant_dir
已不在路径中,而site_scons
已改变了路径。
有没有一种标准的方法可以在SCons或Python中解决这个问题?我知道特殊的SConstruct
目录,但看起来这个目录必须存在于顶级的subdir
根目录,并且我想保留subdir
- {下的特定文件{1}}。
答案 0 :(得分:3)
在项目根目录中使用site_scons目录为您的模块。例如,我是模块xxx,他被放置:root/site_scons/xxx/__init__.py
。现在,我可以在所有SConscript文件中导入xxx。
答案 1 :(得分:1)
在SConscript
之前,在import
之前,改变Python的路径:
# subdir/SConscript
module_path = Dir('.').srcnode().abspath # get the path to subdir
import sys
sys.path.append(module_path)
from module import foo
答案 2 :(得分:0)
导出PYTHONPATH = / path / to / dir_of_modules
这对我有用