2012-08-05 140 views
-1

我输入如下模块:导入模块无法使用的功能从模块

filename = "email" 
mymodule = __import__('actions.'+filename) 

我有这个问题,该文件被立即执行,而我宁愿执行一个来自文件的特定函数(这样我可以通过它发送变量)。

暂时,我不是立即关心当我添加下面的行(当脚本被导入时)时脚本是否执行,因为我将使用if __name__ == "__main__"技巧解决它。

mymodule = __import__('actions.'+filename) 

但我想工作的是当我添加下面的行,我想要执行的功能。但是,我得到一个错误,即使它存在于脚本中,该模块也没有该功能。

mymodule.OpenEmail(n) 

函数名称并不重要,因为我已经能够得到下面的脚本在自己的工作,当我运行它,但试图将其导入闲置和执行行了,当上面我得到一个错误,说该模块没有该功能(或一些非常类似的错误)。无论如何,下面的代码是一个示例脚本,我像插件一样使用。但我的主要观点是,我能够动态地导入和执行python脚本,但现在我想能够通过发送变量到文件。如果我能以某种方式让函数像上面那样工作,那我肯定它会解决我的问题。

import webbrowser 
def OpenEmail(): 
    handle = webbrowser.get() 
    handle.open('http://gmail.google.com') 
OpenEmail() 
print "Your email has been opened" 
+1

为什么有新的问题? http://stackoverflow.com/questions/11814565/python-trouble-with-calling-functions-from-a-module – phant0m 2012-08-05 08:54:47

+0

,因为我没有得到明确的答案,将工作,并在那个时候,我认为这是由于我在另一篇文章中没有明确说明我的问题。 – bs7280 2012-08-06 06:39:15

+1

@ user1270285:您可以编辑您以前的问题。 – 2012-08-06 06:47:14

回答

0

很简单,这是我在空闲

filename = 'actions.email' 
mod = __import__(filename) 
VAR = getattr(mod, 'email') 
VAR.OpenEmail() 

得到了我的电子邮件,打开没有!

2

As documented,使用__import__()用虚线名称和没有fromlist参数返回到最上面的包的引用。您可以使用点符号或getattr()来访问相应的属性以降低程序包层次结构。

+0

谢谢!经过getattr()的闲置后,我得到了它的工作! – bs7280 2012-08-06 06:36:21