1

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

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

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

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

自然地,如果我编写代码手动加载“Bob”只是为了让插件在我的 IDE 中工作,那么当插件“真正”运行时会干扰插件。我需要帮助的是: 如何让我的插件在“Bob”已经加载的情况下启动(通过我的启动工具)?

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

4

1 回答 1

2

据推测,当您在 Eclipse 下“独立”运行它时(或者在没有 Eclipse 的情况下“独立”运行,就这一点而言,就像 shell 提示符下的“python foobar.py”),你的模块的__name__全局变量的值为'__main__'(相反,如果模块被导入,则该全局变量的值将是'foobar'- 或者模块的名称)。

所以,只要做

if __name__ == '__main__':
    import Bob

并且当您的模块独立运行时,您可以导入 Bob,而当您的模块被import编辑时不会产生任何不良影响。

于 2010-01-18T01:15:44.003 回答