ImportError: динамический модуль не определяет функцию экспорта модуля (PyInit caffe)

Я устанавливаю caffe с python3, но когда я импортирую caffe, я получаю некоторые ошибки Traceback (последний звонок):

 File "classify.py", line 14, in <module>
    import caffe
  File "/home/hez/caffe-master/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver
  File "/home/hez/caffe-master/python/caffe/pycaffe.py", line 13, in <module>
    from ._caffe import Net, SGDSolver
ImportError: dynamic module does not define module export function (PyInit__caffe)

но он хорошо работает в python2.7.

у меня был add /path/to/caffe/distrubute / python к пути, но когда я делаю pycaffe, он показывает, что

make: Nothing to be done for `pycaffe'.

Как я могу решить эту проблему? Большое спасибо.

2 ответов


обновление
Caffe поддерживает python 3.3+. Пожалуйста, проверьте руководство по установке и предпосылки.

Оригинал (устаревшее) ответ
Использование caffe с python 3 в настоящее время не поддерживается:

интерфейс Python Caffe работает с Python 2.7. Python 3 или более ранние Pythons - это ваше собственное приключение.

посмотреть руководство по установке caffe.


теперь можно построить кафе для Python3, и я почти уверен, что это было возможно в декабре 16, когда был задан вопрос.

для этого необходимо удалить комментарии в файле Makefile.config с Питон3:

# Uncomment to use Python 3 (default is Python 2)
# Check that boost library name is correct here!!!
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
                 /usr/lib/python3.5/dist-packages/numpy/core/include

но поэтому у вас будет caffe только в python3 или python2, из-за того, как устанавливается caffe (с PYTHON_PATH, не очень хороший способ).

чтобы обойти это, вы можете сделать такой трюк в ~/.bashrc следующее:

alias python2="export PYTHONPATH=$PYTHONPATH:/home/undead/reps/caffe_py2/python && python2"
alias python3="export PYTHONPATH=$PYTHONPATH:/home/undead/reps/caffe_py3/python && python3"
alias python="export PYTHONPATH=$PYTHONPATH:/home/undead/reps/caffe_py2/python && python2"

поэтому оба будут работать.