在ubuntu上导入caffe时,ImportError无法导入名称BytesIO

sto*_*ang 7 python ubuntu python-2.7 scikit-image caffe

我正在尝试在装有Ubuntu 12.04LTS的机器上运行caffe.完成安装页面上的所有步骤后,我成功训练了LeNet模型并尝试将其用作此处的教程.然后我收到以下错误:

Traceback (most recent call last): 
    File "<string>", line 1, in <module>
ImportError: No module named caffe
Error in sys.excepthook:
Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 66, in apport_excepthook
      from apport.fileutils import likely_packaged, get_recent_crashes
    File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 1, in <module>
      from apport.report import Report
    File "/usr/lib/python2.7/dist-packages/apport/report.py", line 18, in <module>
      import problem_report
    File "/usr/lib/python2.7/dist-packages/problem_report.py", line 14, in <module>
      import zlib, base64, time, sys, gzip, struct, os
    File "/usr/lib/python2.7/gzip.py", line 10, in <module>
      import io
    File "${HOME}/path/to/caffe/python/caffe/io.py", line 2, in <module>
      import skimage.io
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/__init__.py", line 11, in <module>
      from ._io import *
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/_io.py", line 1, in <module>
      from io import BytesIO
ImportError: cannot import name BytesIO

Original exception was:
Traceback (most recent call last): 
    File "<string>", line 1, in <module>
ImportError: No module named caffe
Run Code Online (Sandbox Code Playgroud)

我在上面做之前设置了PYTHONPATHin .bashrc文件.问题是什么?任何人都可以给出一些暗示吗?我真的很困惑.在python -c 'import io; print io.__file__'目录中运行命令后:

Traceback (most recent call last): 
    File "${HOME}/path/to/caffe/python/caffe/io.py", line 2, in <module>
      import skimage.io
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/__init__.py", line 11, in <module>
      from ._io import *
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/_io.py", line 1, in <module>
      from io import BytesIO
ImportError: cannot import name BytesIO
Error in sys.excepthook:
Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 66, in apport_excepthook
      from apport.fileutils import likely_packaged, get_recent_crashes
    File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 1, in <module>
      from apport.report import Report
    File "/usr/lib/python2.7/dist-packages/apport/report.py", line 18, in <module>
      import problem_report
    File "/usr/lib/python2.7/dist-packages/problem_report.py", line 14, in <module>
      import zlib, base64, time, sys, gzip, struct, os
    File "/usr/lib/python2.7/gzip.py", line 10, in <module>
      import io
    File "${HOME}/path/to/caffe/python/caffe/io.py", line 2, in <module>
      import skimage.io
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/__init__.py", line 11, in <module>
      from ._io import *
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/_io.py", line 1, in <module>
      from io import BytesIO
ImportError: cannot import name BytesIO

Original exception was:
Traceback (most recent call last): 
    File "${HOME}/path/to/caffe/python/caffe/io.py", line 2, in <module>
      import skimage.io
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/__init__.py", line 11, in <module>
      from ._io import *
    File "/usr/local/lib/python2.7/dist-packages/skimage/io/_io.py", line 1, in <module>
      from io import BytesIO
ImportError: cannot import name BytesIO
Run Code Online (Sandbox Code Playgroud)

那么,问题就变成了:如何解决名称问题?PS:我还在caffe的存储库中插入了一个问题.

Mar*_*ers 11

您似乎io在Python路径中命名了一个包含标准库包的软件包或模块.它是导入的,但没有BytesIO要导入的对象.

试试跑步:

python -c 'import io; print io.__file__'
Run Code Online (Sandbox Code Playgroud)

在您运行教程的同一位置,重命名或移动该导入命名的文件,假设它不是标准库版本(以结尾lib/python2.7/io.pyc).

可能是您将Python路径设置为错误的目录.你应该包括path/to/caffe/python,不path/to/caffe/python/caffe应该,也不应该尝试运行python,后者作为当前的工作目录.在这两种情况下,caffe/python/caffe/io.py而不是标准库版本.

这里的安装说明没有错; 他们明确告诉你使用:

export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

请注意该/caffe路径末尾的缺失.