如何从python中的方法执行全局from foo import bar?
Posted
技术标签:
【中文标题】如何从python中的方法执行全局from foo import bar?【英文标题】:How to do a global from foo import bar from a method in python? 【发布时间】:2017-09-06 23:31:22 【问题描述】:所以我正在努力在一个名为 NAO 的机器人上实现 websocket 客户端协议。不涉及太多细节,我不能进行正常的导入,因为在我可以做任何导入语句之前需要一个变量,所以我需要在一个方法中处理我的导入语句。
问题是我需要在一个文件中跨多个类的这些包,因此我真的需要将这些导入全局化。
现在我发现另一个 *** 帖子处理几乎相同的事情:
Python: how to make global imports from a function
但是,这篇文章只处理常规导入,而不是类导入(这可能有一个正确的名称,但我不知道)
有人知道如何处理这个问题吗?
【问题讨论】:
【参考方案1】:你的意思是这样的?
>>> def f():
... global pi
... from math import pi
...
>>> pi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'pi' is not defined
>>> f()
>>> pi
3.141592653589793
>>>
【讨论】:
好吧,我之前试过这个,但我不确定这是不是正确的方法,所以当我收到另一个错误时我放弃了它。但是您的回答让我对这个新错误有了一些了解。似乎从方法导入会导致具有导入超类的类抛出错误。这种行为也可以在桌面上复制。我意识到这是一个完全不同的问题,但我不妨问:你知道解决这个问题的任何方法吗? @user2983738 hm 也许我可以提供帮助,但我需要更多详细信息。也许只是对SO提出一个新问题?没有看到就很难调试代码:)以上是关于如何从python中的方法执行全局from foo import bar?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 C 中引用在 Visual Studio 的 .asm 文件中定义的全局变量
从__init__.py中的函数导入模块将模块对象绑定到全局命名空间?