首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导入functools后无法导入名称'MappingProxyType‘错误

导入functools后无法导入名称'MappingProxyType‘错误
EN

Stack Overflow用户
提问于 2017-04-17 22:26:35
回答 2查看 8.7K关注 0票数 15

在我导入functools之后,我从解释器收到这样的消息:

导入回溯(最近一次调用):文件导入第1行,在导入函数工具中文件"C:\Python3\lib\functools.py",第22行,来自类型导入MappingProxyType ImportError:无法导入名称'MappingProxyType‘

代码语言:javascript
复制
import functools


def trace(func):
    def inner(*args, **kwargs):
        print(func.__name__, args, kwargs)
        return func(*args, **kwargs)
    functools.update_wrapper(inner, func)
    return inner


@trace
def foo(x):
    return x


foo(42)

使用PyCharm作为集成开发环境,使用CPython作为解释器

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-25 00:27:11

这不是一个真正的答案,而是一个评论。

首先:我无法验证所提出的问题:问题中的代码在我正在使用的标准python中工作得很好。

第二:我偶然发现了这个问题,因为我收到了相同的错误消息,但可能是出于不同的原因。我不小心将一个模块命名为"type“。奇怪的是,python框架在解析导入的系统模块中的引用时,选择了这个新的“类型”模块。这表明python解析引用的算法有点...好吧..。一些非常简单的设计。

但是,如果读者收到此错误消息,请首先检查您是否在代码中的某个地方意外地将某些内容命名为"type“,这是解决问题的第一种方法,然后再检查该错误消息的其他原因。

这在中是很常见的现象。注意!每当您为模块指定一个已经用于任何导入的Python模块的名称时(您可能不知道这些名称!)您将有机会获得与问题中描述的错误或多或少类似的奇怪错误。

票数 63
EN

Stack Overflow用户

发布于 2020-01-22 21:05:47

被接受的解决方案会强制您重命名模块,但是:

在你的软件包中有一个名为types的模块没有什么问题,实际上,如果解释器在当前目录下运行,或者PYTHONPATH目录被设置为包含该模块的目录,你会得到这个错误。

如果避免了这种情况,就不必重命名模块了。

如果使用集成开发环境,请检查运行配置,确保没有将PYTHONPATH或当前目录设置为包含模块。

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

https://stackoverflow.com/questions/43453414

复制
相关文章

相似问题

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