将变量“预导入”到模块中

时间:2010-01-18 01:04:53

标签: python pydev

Python初学者在这里,所以如果这个问题有一个简单的答案我很抱歉。 (我希望如此。)

我正在开发一个python模块 - 一个更大程序的插件。我正在尝试使用Eclipse IDE(使用pydev)开发模块,这意味着我需要能够独立运行此模块,即不能作为大型程序的插件。

我实际上已经自己整理了很多毛茸茸的细节,其中大部分涉及创建一种“线束”,以模拟的方式从我的IDE启动插件(从插件的角度来看)从其真实的运营环境中启动。

但有一件事让我失望。当模块从它的“真实”环境中运行时,它以某种方式具有某个名称(称为“Bob”)已在其dir()结果中定义。当我在自己的环境中运行它时,“Bob”不会出现在dir()中,除非我手动加载它。

当然,如果我编写代码来手动加载“Bob”,以便插件可以在我的IDE中运行,那么当它运行“for real”时会干扰插件。我需要帮助的是:如何在已经加载“Bob”的情况下启动我的插件(通过我的启动工具)?

天真地,我有点希望以某种方式能够“强迫”插件以某种方式导入“Bob”,而不必实际向插件本身添加“import Bob”。但我愿意接受更好的建议......?

1 个答案:

答案 0 :(得分:2)

据推测,当你在Eclipse下“独立”运行它(或者在没有Eclipse的情况下“独立”,就像在shell提示符下的“python foobar.py”一样),你的模块的{{1} } global变量的值为__name__(如果模块被导入,则全局变量的值将为'__main__' - 或者模块的名称为。{。

所以,只需做

'foobar'

您可以在模块独立运行时导入Bob,而当您的模块获得if __name__ == '__main__': import Bob 时,不会产生任何不良影响。