在我导入functools之后,我从解释器收到这样的消息:
导入回溯(最近一次调用):文件导入第1行,在导入函数工具中文件"C:\Python3\lib\functools.py",第22行,来自类型导入MappingProxyType ImportError:无法导入名称'MappingProxyType‘
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作为解释器
发布于 2017-10-25 00:27:11
这不是一个真正的答案,而是一个评论。
首先:我无法验证所提出的问题:问题中的代码在我正在使用的标准python中工作得很好。
第二:我偶然发现了这个问题,因为我收到了相同的错误消息,但可能是出于不同的原因。我不小心将一个模块命名为"type“。奇怪的是,python框架在解析导入的系统模块中的引用时,选择了这个新的“类型”模块。这表明python解析引用的算法有点...好吧..。一些非常简单的设计。
但是,如果读者收到此错误消息,请首先检查您是否在代码中的某个地方意外地将某些内容命名为"type“,这是解决问题的第一种方法,然后再检查该错误消息的其他原因。
这在中是很常见的现象。注意!每当您为模块指定一个已经用于任何导入的Python模块的名称时(您可能不知道这些名称!)您将有机会获得与问题中描述的错误或多或少类似的奇怪错误。
发布于 2020-01-22 21:05:47
被接受的解决方案会强制您重命名模块,但是:
在你的软件包中有一个名为types
的模块没有什么问题,实际上,如果解释器在当前目录下运行,或者PYTHONPATH
目录被设置为包含该模块的目录,你会得到这个错误。
如果避免了这种情况,就不必重命名模块了。
如果使用集成开发环境,请检查运行配置,确保没有将PYTHONPATH
或当前目录设置为包含模块。
https://stackoverflow.com/questions/43453414
复制相似问题