我尝试调试一个scons文件,如下所示:scons --debug=pdb。当我尝试使用b SConstruct:24在SConstruct中设置断点时,出现错误:
scons --debug=pdb
b SConstruct:24
SConstruct
***在系统路径中未找到“SConstruct”
我的SConstruct文件在当前目录中。我尝试将当前目录附加到sys.path。使用sys.path.append(os.getcwd()),然后重新运行b SConstruct:24命令,但我仍然得到相同的错误。知道为什么会发生这种情况吗?
sys.path
sys.path.append(os.getcwd())
8mmmxcuj1#
这是由于Python的pdb的实现,在启动时,脚本的路径被插入到sys.path--但那是SCons的路径,而不是你的项目的路径,你可以自己把它添加到sys.path,但不清楚它是否真的适用于SConstruct/SConscript:一个文档字符串建议可以省略.py,但这似乎意味着如果文件名为something.py,您可以要求something-如果您提供的名称没有扩展名,它会在执行查找时添加.py。真正起作用的是SConstruct的绝对路径,因为pdb的lookupmodule方法以如下方式开始:
SConscript
.py
something.py
something
lookupmodule
if os.path.isabs(filename) and os.path.exists(filename): return filename
诚然,打字是一件痛苦的事。SCons确实允许您将您的sconstruct文件命名为SConstruct.py,这可能有助于在以这种方式进行调试时作为临时措施。
SConstruct.py
1条答案
按热度按时间8mmmxcuj1#
这是由于Python的pdb的实现,在启动时,脚本的路径被插入到
sys.path
--但那是SCons的路径,而不是你的项目的路径,你可以自己把它添加到sys.path
,但不清楚它是否真的适用于SConstruct
/SConscript
:一个文档字符串建议可以省略.py
,但这似乎意味着如果文件名为something.py
,您可以要求something
-如果您提供的名称没有扩展名,它会在执行查找时添加.py
。真正起作用的是SConstruct
的绝对路径,因为pdb的lookupmodule
方法以如下方式开始:诚然,打字是一件痛苦的事。
SCons确实允许您将您的sconstruct文件命名为
SConstruct.py
,这可能有助于在以这种方式进行调试时作为临时措施。