2015-12-15 3 views
5

я установить Caffe с Python3, но когда я импортировать Caffe, я получаю некоторые ошибки Traceback (самый последний вызов последнего):ImportError: динамический модуль не определяет функцию экспорта модуля (PyInit__caffe)

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.

я добавить/путь/к/кофейная/distrubute/Python в PATH, но когда я делаю pycaffe, это показывает, что

make: Nothing to be done for `pycaffe'. 

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

ответ

5

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

Original (устаревшее) ответ
Использование Caffe с Python 3 в настоящее время не поддерживается:

Caffe’s Python interface works with Python 2.7. Python 3 or earlier Pythons are your own adventure.

См caffe's installation tutorial.

+1

О нет! Спасибо. – Philokey

+0

@Philokey жаль, что я не мог принести вам хорошие новости здесь :( – Shai

+1

Эй, это все еще так? Инструкции по установке caffe показывают также python3. Можете ли вы обновить свой ответ в свете новой информации – Ravikrn

2

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

Чтобы сделать это, вам нужно удалить комментарии в Makefile.config с Python3:

# 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, из-за способа, как кофейная Установок (с 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" 

Поэтому оба произведения.

+0

Нужно ли делать «делать все» после выполнения этих изменений? – Ravikrn

+0

@Ravikrn нет, вам нужно построить обе библиотеки (.so) и указать их таким образом. – UndeadDragon

+0

Можете ли вы прокомментировать. Я просто хочу, чтобы python3 и сначала я установил caffe с инструкциями python2. Что вы подразумеваете под сборкой обеих библиотек? My ~/.bashrc имеет «export PYTHONPATH =/home/path/caffe/python: $ PYTHONPATH» – Ravikrn

Смежные вопросы

 Смежные вопросы