python3.6 ImportError:无法导入名称' reduce'

时间:2017-07-27 10:59:00

标签: python python-3.x

from functools import reduce

我使用python 3.6.2,这是唯一显示以下错误的代码:

  

追踪(最近一次通话):     文件" D:\ Pythons \ oop.py",第50行,in       来自functools import减少
  ImportError:无法导入名称' reduce'   进程返回1(0x1)执行时间:0.145 s

我会发现这个问题,因为我在另一个代码中犯了错误,

  

来自enum import Enum

它报告了错误:

  

回溯(最近一次调用最后一次):文件" D:\ Pythons \ oop.py",行   50,在       来自enum import Enum File" C:\ Users \ Administrator \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ enum.py",   第3行,在       来自functools import reduce ImportError:无法导入名称' reduce'

所以我只看了enum. Py来源,发现在第3行

  

来自functools import reduce

女士们先生们,在centos7.2中安装python3.6.2完全没有任何问题,但是在安装了Windows 10专业版之后,会出现上面的这些问题,好像我安装出了问题,但很多次我和#39;已卸载,反复多次安装,仍然不会做,不知道没有那些文件,谁能告诉我如何通过Windows环境中的命令行进行安装?

2 个答案:

答案 0 :(得分:0)

Python 3.6应该在functools中减少。要调试您的问题,请尝试以下方法:

import functools
for obj in dir(functools):
    print(obj)

我希望输出类似于(在此尝试:https://www.python.org/shell/):

MappingProxyType
RLock
WRAPPER_ASSIGNMENTS
WRAPPER_UPDATES
WeakKeyDictionary
_CacheInfo
_HashedSeq
__all__
__builtins__
__cached__
__doc__
__file__
__loader__
recursive_repr
__name__
__package__
__spec__
_c3_merge
_c3_mro
_compose_mro
_convert
_find_impl
_ge_from_gt
_ge_from_le
_ge_from_lt
_gt_from_ge
_gt_from_le
_gt_from_lt
_le_from_ge
_le_from_gt
_le_from_lt
_lru_cache_wrapper
_lt_from_ge
_lt_from_gt
_lt_from_le
_make_key
cmp_to_key
get_cache_token
lru_cache
namedtuple
partial
partialmethod
recursive_repr
reduce
singledispatch
total_ordering
update_wrapper
wraps

我的猜测不仅仅是减少。在任何情况下,它看起来像卸载而不是重新安装。您可能意外地编辑了文件或以某种方式损坏了文件。有时IDE可以将您带到该功能,并且很容易意外地编辑它。

答案 1 :(得分:0)

不要处理这些错误。只是尝试在代码中使用 functools

import functools 

# Create a list of strings: stark
stark = ['robb', 'sansa', 'arya', 'eddard', 'jon']

# Use reduce() to apply a lambda function over stark: result
result = functools.reduce((lambda item1,item2:item1 + item2), stark)

或者那样:

# Import reduce from functools
from functools import reduce

# Create a list of strings: stark
stark = ['robb', 'sansa', 'arya', 'eddard', 'jon']

# Use reduce() to apply a lambda function over stark: result
result = reduce((lambda item1,item2:item1 + item2), stark)