首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python多处理错误: AttributeError:模块'__main__‘没有属性'__spec__’

Python多处理错误: AttributeError:模块'__main__‘没有属性'__spec__’
EN

Stack Overflow用户
提问于 2017-08-17 01:56:24
回答 3查看 23.2K关注 0票数 32

我正在使用Python3.6,并尝试遵循下面网站上的第一个示例(完整代码也在下面),并收到以下错误:https://docs.python.org/3.6/library/multiprocessing.html

错误消息:AttributeError: module '__main__' has no attribute '__spec__'

完整示例代码:

代码语言:javascript
复制
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))

我试着用谷歌搜索它并搜索Stack Overflow,但我只找到了这个错误的另一个例子,它没有答案。

EN

回答 3

Stack Overflow用户

发布于 2017-08-17 02:45:49

问题不在于代码/ Python 3.6,而在于Spyder。

经过一些调查后,我发现代码在外部系统终端中执行时运行良好,但在Spyder的IPython控制台中运行时就不能正常运行。

我能够转储规范的内容,并将它们赋给包含在main中的一个变量,以允许此代码在IPython控制台中运行。

代码语言:javascript
复制
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    __spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)"
    with Pool(5) as p:
       print (p.map(f, [1, 2, 3]))
票数 37
EN

Stack Overflow用户

发布于 2020-03-30 09:46:14

pdb用户

这个问题没有特别提到Spyder和Conda (尽管它是这样标记的)。因此,我会注意到,我发现在使用pdb时也会发生这种情况。

例如。

python -m pdb myprogram.py

如果您想继续使用pdb,传递__spec__ = None将是一个有用的变通方法。

票数 17
EN

Stack Overflow用户

发布于 2018-10-24 23:22:48

在Spyder (Anaconda3,Python3.6)中,当我尝试外部终端时,也会遇到同样的问题。

代码语言:javascript
复制
Error message: AttributeError: module '__main__' has no attribute '__spec__'

我将运行控制台更改为“在当前控制台中执行”,并应用了它。然后,如果这不起作用,请尝试其他咨询,然后更改回“在当前控制台中执行”。最后,它起作用了。不需要'__spec__ = None'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45720153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档