如何从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?的主要内容,如果未能解决你的问题,请参考以下文章

关于python中的module

如何从python中的线程获取返回值?

如何从 C 中引用在 Visual Studio 的 .asm 文件中定义的全局变量

从__init__.py中的函数导入模块将模块对象绑定到全局命名空间?

python中的本地变量(local variable)和全局变量(global variable)分别是啥?

类定义中的变量范围令人困惑