anaconda macOS ImportError:无法导入名称'MappingProxyType'

Ger*_*tre 1 macos python-3.x scikit-learn anaconda python-3.5

我刚刚在mac(macOS Sierra 10.12.2)上安装了带有python 3的anaconda,许多软件包在导入时都会发出错误.这似乎与打字包有关,但我无法弄清楚发生了什么.如果我做

python -c 'import sklearn'
Run Code Online (Sandbox Code Playgroud)

(蟒蛇正在Python 3.5.2 :: Anaconda 4.2.0 (x86_64))

我收到此错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/geromepistre/anaconda3/lib/python3.5/site-packages/sklearn/__init__.py", line 57, in <module>
    from .base import clone
  File "/Users/geromepistre/anaconda3/lib/python3.5/site-packages/sklearn/base.py", line 6, in <module>
    import copy
  File "/Users/geromepistre/anaconda3/lib/python3.5/copy.py", line 51, in <module>
    import types
  File "/Users/geromepistre/types.py", line 1, in <module>
    import typing
  File "/Users/geromepistre/anaconda3/lib/python3.5/typing.py", line 4, in <module>
    import contextlib
  File "/Users/geromepistre/anaconda3/lib/python3.5/contextlib.py", line 5, in <module>
    from functools import wraps
  File "/Users/geromepistre/anaconda3/lib/python3.5/functools.py", line 22, in <module>
    from types import MappingProxyType
ImportError: cannot import name 'MappingProxyType'
Run Code Online (Sandbox Code Playgroud)

我试图深入研究错误中提到的包,但它变得更加混乱. import types给出了同样的错误,以及import contextlib.但如果我import contextlib第一次(并得到一个错误),那么import types我没有错误.我得到一个全新的错误import sklearn:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/geromepistre/anaconda3/lib/python3.5/site-packages/sklearn/__init__.py", line 57, in <module>
    from .base import clone
  File "/Users/geromepistre/anaconda3/lib/python3.5/site-packages/sklearn/base.py", line 6, in <module>
    import copy
  File "/Users/geromepistre/anaconda3/lib/python3.5/copy.py", line 114, in <module>
    types.BuiltinFunctionType, type(Ellipsis),
AttributeError: module 'types' has no attribute 'BuiltinFunctionType'
Run Code Online (Sandbox Code Playgroud)

Mat*_*DMo 9

您似乎是从您的主目录运行Python,根据第一个回溯包含一个名为的文件types.py.由于当前目录(.在Unix/Linux用语中)是第一个条目sys.path,Anaconda 在标准lib或site-packages 之前搜索模块/文件.

出于这个原因,不惜一切代价避免为标准库或站点包中的模块命名文件.将文件重命名types.pymy_types.py或者应该解决问题.