web-dev-qa-db-ja.com

ImportError:動的モジュールはモジュールのエクスポート関数を定義していません(PyInit__caffe)

Python3でcaffeをインストールしましたが、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でうまく動作します。

/ path/to/caffe/distrubute/pythonをPATHに追加しましたが、pycaffeを作成すると、

make: Nothing to be done for `pycaffe'.

この問題を解決するにはどうすればよいですか?どうもありがとうございました。

8
Philokey

更新
Caffeはpython 3.3+をサポートしています。インストールガイドと 前提条件 を確認してください。

元の(古い)回答
caffeをpython 3で使用することは現在サポートされていません:

CaffeのPythonインターフェースはPython 2.7で動作します。Python 3以前のPythonはあなた自身の冒険です。

caffeのインストールチュートリアル を参照してください。

5
Shai

Python3用のCaffeをビルドできるようになりました。質問があった12月16日にはそれが可能だったと思います。

これを行うには、Python3でMakefile.configのコメントを削除する必要があります。

# 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

しかし、したがって、あなたはpython3 OR python2でのみcaffeを使用します。これは、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"

したがって、どちらも機能します。

2
UndeadDragon

正しいpythonバージョンを使用していることを確認してください。

import platform
print(platform.python_version())

私はPython3で問題に遭遇し、Python2で問題なく動作しました。

0
FantasyJXF