"未定义的变量:环境"在Eclipse Neon

时间:2017-06-06 01:27:47

标签: eclipse scons

我有一个SCons项目(http://gmt.soest.hawaii.edu/doc/latest/GMT_Tutorial.html使用SCons而不是shell脚本的Generic Mapping Tools教程的实现),我正在使用Eclipse Neon编辑{{ 1}}文件。

Sconstruct文件以非常标准的方式启动(文件的其余部分对于这个问题并不重要)。

Sconstruct

令我讨厌的是,虽然构建使用import os import collections env = Environment(ENV = os.environ) bld = Builder(action = 'ps2pdf $SOURCE $TARGET', \ suffix = '.pdf', \ src_suffix = '.ps') 完美地工作,但Eclipse会将sconsEnvironment构造标记为"未定义的变量"。

我安装了Builder插件,但没有任何区别。

我发现错误的标记并非令人讨厌的错误。

虽然我可以做一些事情,比如告诉Eclipse忽略错误,但我更喜欢更智能的东西,例如将SConsolidator添加到库路径。我尝试将SconsC:\Python27\Lib\site-packages\scons-2.5.1\Scons添加到Python解释器路径(窗口→首选项→PyDev→解释器→Python解释器→路径),并使用像C:\Python27\Lib\site-packages\scons-2.5.1\Scons\Scripts这样的导入指令,但它没有&# 39;有所作为。

2 个答案:

答案 0 :(得分:0)

尝试库路径:

C:\Python27\Lib\site-packages\scons-2.5.1\

然后

from SCons.Script import *

答案 1 :(得分:0)

首先要做的事情 - 如果你确切地知道你的插件在哪里保留它的符号索引(es),请确保它们不会被编辑器/ IDE /构建认为他们正在做的任何“有用”删除。< / p>

编辑器的Python插件容易混淆,您可能需要绘制非常明确和详细的图片并训练它们(通过停止调试器中的代码),以便扫描仪/索引器“唤醒”并最终扫描并索引所有符号。

我在VS(使用PTVS)中做的是为Scons_lib创建一个项目(在C:\ Python27 \ Lib \ site-packages \ scons-2.5.0中为主页),为Scons_Scripts创建另一个项目(C:\ Python27 \ Scripts) \,启动文件:scons.py)

然后为单独的scons驱动的文件夹/构建单独的项目。为了让编辑器立即将构建文件识别为Python,我添加扩展名.scons(在Chrome构建中使用google的约定,Sconcsript是ProjName.scons),告诉VS .scons也是Python,将Sconstruct重命名为Make.scons。

然后我尽可能多次在调试器中运行(使用-f Make.scons -n):-)尝试将断点放在不同的文件中,形成我知道会运行的不同子包。让scons抛出异常(比如缺少Sconstuct文件)也是文件 - 目标是强制索引器去位置,因为它看到调试器正在那里。

N运行后,(和/或K天)。 PTVS(你可以认为它是一个插件)所有突然开始识别所有符号,包,子包,只能无法穿透隐藏在缓存后面的东西。

试图确定哪些事件确切地使扫描仪/索引器看到了光。可能就像看到“意外”路径中的文件数量在调试器中一样。大多数符号立即在调试器中可见,除了首先加载的文件(scons.py和我自己从scons.py执行的文件,在其他任何运行之前注入我想要的任何东西。)

另外我保持PYTHONDONTWRITEBYTECODE = 1以确保它总是必须加载实际的.py-s

使用单个文件可能有助于从每个子包中执行某些操作,使用断点将其丢弃并让它运行几次。