【问题标题】:Importin `scipy.io` in Python 3.5在 Python 3.5 中导入`scipy.io`
【发布时间】:2016-11-02 22:06:30
【问题描述】:

我有 Python 3.5,当我尝试导入 scipy.io 时,它失败并显示 ImportError

>>> from scipy import io
----> from scipy import io
/opt/rh/rh-python35/root/usr/lib64/python3.5/site-packages/scipy/io/__init__.py in <module>()
---> from .matlab import loadmat, savemat, whosmat, byteordercodes
/opt/rh/rh-python35/root/usr/lib64/python3.5/site-packages/scipy/io/matlab/__init__.py in <module>()
---> from .mio import loadmat, savemat, whosmat
/opt/rh/rh-python35/root/usr/lib64/python3.5/site-packages/scipy/io/matlab/mio.py in <module>()
---> from .miobase import get_matfile_version, docfiller
/opt/rh/rh-python35/root/usr/lib64/python3.5/site-packages/scipy/io/matlab/miobase.py in <module>()
---> from six import reduce
ImportError: cannot import name 'reduce'

因此,根据this,显然在Python 3.5 中recude 从six.reduce 更改为six.functools.reduce,实际上我可以使用import sixsix.functools.reduce 导入它。

所以,看起来scipy 的 3.5 版本有这个错误(也许?),这在 2.7 中不会发生。有什么办法可以解决这个问题,以便我可以使用scipy.io

我有带有 python 3.5.1、scipy 0.17.0 和 numpy 1.10.4 的 CentO。

【问题讨论】:

    标签: python python-3.x scipy


    【解决方案1】:

    在我的scipy(版本号相同)版本中,成功导入后,我在'/usr/lib/python3/dist-packages/scipy/io/matlab/miobase.py'中看到了

    from scipy._lib.six import reduce
    

    我的 numpy 有点新,但其他版本看起来一样

    six.py 确实如此

    if PY3:
        import builtins
        import functools
        reduce = functools.reduce
        zip = builtins.zip
        xrange = builtins.range
    

    【讨论】:

    • scipy._lib.six 导入在这里运行良好,但是,我不确定这如何解决我的问题。当我尝试导入 scipy.io 时,它仍然失败。我的目标最终是导入scipy.io
    • 所以miobase.py 文件使用from six...?我想知道那是从哪里来的。根据 scipy github 的说法,使用 _lib.six 的切换是在 2014 年完成的。你的安装有些有趣。
    • 还有一些其他的 SO scipy.io 错误问题;但是缺少_lib.six.py 文件似乎比您的错误更常见。
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多