2017-02-08 3 views
0

私はUbuntuのでnumpyのを使用しようとしていたが、それはエラーで失敗します。python 3.4では動作しますが、3.5では動作しないnumpyのインストールは、どのようにインストール/修正しますか?

Importing the multiarray numpy extension module failed. Most likely you are trying to import a failed build of numpy. If you're working with a numpy git repo, try git clean -xdf (removes all files not under version control). Otherwise reinstall numpy.

キャッチは私のpython 3.5(私はthis questionで提案してインストールすること)の代わりに付属しているものを使用していますということですデフォルト3.4。だから私はその答えを示唆してインストールし、次に私はnumpyをインストールしました:

pip3 install --target=/usr/local/lib/python3.5/dist-packages numpy 

それがpython3.5にインストールされるように。その後、numpyを使用しようとすると上記のエラーが発生します。しかし、私がデフォルトのpython 3.4で使用すると、私はそのエラーはありません。私は明らかにnumpyを再インストール/更新/修正しようとしましたが、何もしませんでした。具体的には:

pip install --target=/usr/local/lib/python3.5/dist-packages --upgrade numpy 

ubuntuでpython 3.5を使用してnumpyをインストールする方法はありますか?実際にnumpyを修正するにはどうすればいいですか? 3.4のための私のnumpyの仕事はなぜ3.5のためではないか。


完全なエラーは次のとおりです。警告として

>>> import numpy 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/numpy/core/__init__.py", line 16, in <module> 
    from . import multiarray 
ImportError: cannot import name 'multiarray' 

During handling of the above exception, another exception occurred: 

    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
     File "/usr/local/lib/python3.5/dist-packages/numpy/__init__.py", line 142, in <module> 
     from . import add_newdocs 
     File "/usr/local/lib/python3.5/dist-packages/numpy/add_newdocs.py", line 13, in <module> 
     from numpy.lib import add_newdoc 
     File "/usr/local/lib/python3.5/dist-packages/numpy/lib/__init__.py", line 8, in <module> 
     from .type_check import * 
     File "/usr/local/lib/python3.5/dist-packages/numpy/lib/type_check.py", line 11, in <module> 
     import numpy.core.numeric as _nx 
     File "/usr/local/lib/python3.5/dist-packages/numpy/core/__init__.py", line 24, in <module> 
     raise ImportError(msg) 
    ImportError: 
    Importing the multiarray numpy extension module failed. Most 
    likely you are trying to import a failed build of numpy. 
    If you're working with a numpy git repo, try `git clean -xdf` (removes all 
    files not under version control). Otherwise reinstall numpy. 

、私は実際には最初のCPU tensorflowドッキングウィンドウの画像を使って、このすべてをしています。だから、私はこれをベース画像としてCPUテンソルフロー画像を持つドッカーコンテナの中に入れました。特に:

FROM gcr.io/tensorflow/tensorflow:latest-devel-py3 

また、私はうまくいくのLEAでいるかどうかを確認するために、ソートのハック何かをしたし、それはしませんでした。私がしたのは、Python3.5のsys.pathのpython3.4パッケージへのパスを追加することでした。だから私はpython3.5ためのコマンドラインに行ってきましたし、私は、SYSを輸入してのsys.pathに次の文字列を追加するために先に行き:

sys.path.append('/usr/local/lib/python3.4/dist-packages') 

それは私が持っている他のライブラリをインポートするために管理しますが、それはしかし、numpyのをインポートするには失敗します。

>>> import numpy 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.4/dist-packages/numpy/__init__.py", line 142, in <module> 
    from . import add_newdocs 
    File "/usr/local/lib/python3.4/dist-packages/numpy/add_newdocs.py", line 13, in <module> 
    from numpy.lib import add_newdoc 
    File "/usr/local/lib/python3.4/dist-packages/numpy/lib/__init__.py", line 8, in <module> 
    from .type_check import * 
    File "/usr/local/lib/python3.4/dist-packages/numpy/lib/type_check.py", line 11, in <module> 
    import numpy.core.numeric as _nx 
    File "/usr/local/lib/python3.4/dist-packages/numpy/core/__init__.py", line 14, in <module> 
    from . import multiarray 
ImportError: cannot import name 'multiarray' 

numpy以外のほとんどのパッケージでは問題ありません。おそらく私がpipをnumpyにインストールすると、自動的にpython 3.4のバージョンになったのでしょうか?


さらに、Dockerfileで回答を行うことができれば、それは非常に役立ちます。

+2

ここで 'pip3'のようなものはあなたのpython 3.4バージョンです。 python 3.5版には別の 'pip'版が必要です。 Pythonバージョンの 'pip'バージョンがインストールされていない場合、' get-pip.py'スクリプトをダウンロードし、 'python3.5'インストールを使用してインストールする必要があります。これは 'python3.5'の' pip'を作成します。 'pip35'のような名前であなたの' PATH'にこの新しいピップを 'シンボリックリンク'するようにしてください。 – Abdou

+0

@AbdouありがとうAbdou、私はまた、その提案を考えて、私は数日の間これをやろうとしていました。あなたがそれを行う方法を知っていれば、コードやコマンドのほうがうまくいければ、私は非常に感謝しています。一方私は努力し続けます。 –

+0

あなたはどの部分を完成できませんか? 'get-pip.py'スクリプトをダウンロードした場合は、' python3.5'を 'python3.5 get-pip.py'としてください。これはPythonのそのバージョンに 'pip'をインストールします。その後、あなたはあなたの 'PATH'にこの新しい' pip 'をリンクできない場合、' python 3.5 -m pip install -U numpy'のようなものを実行することができます。権限の問題が発生した場合は 'sudo'を使用してください。 – Abdou

答えて

1

Pythonのバージョンを混在させることはできません。すべてのバージョンで、NumPyの独自のコピーが必要です。これは、Pythonがクロスバージョンバイナリの互換性を提供していないためです。純粋なPythonパッケージ(NumPyの場合のようにコンパイルされたコードを持たない)では、原則的には動作しますが、環境を管理するのは難しいです。一部のディストリビューションでは、ファイルにシンボリックリンクを共有しています(.py)。

最初に間違ったインストールを削除することです。 私はPythonを入手することにのみ焦点を合わせます3。5 rmコマンドを使用してを続行する前に

cd /usr/local/lib/python3.5/dist-packages 

警告動作するようにインストールなおさらあなたがroot権限が/usrで動作する必要があるとして、注意が必要です。

rm -r numpy 

(ルートとして)。

次に、pipが必要です。あなたはは、PyPIウェブページからのファイルでそれをインストールすることができます。https://pip.pypa.io/en/latest/installing/

cd 
wget https://bootstrap.pypa.io/get-pip.py 

とあなたがコンピュータ全体または(--userオプション付き)だけで、現在のユーザーのためにこれを行うことができます

python3.5 get-pip.py 

をインストールしてください。ピペットを取り付けた後は、

python3.5 -m pip install -U numpy 

とする必要があります。

Pythonのバージョン用のバイナリパッケージがなく、pipがコンパイルを開始して失敗した場合は、python3.5-devパッケージをインストールしてください。

+0

私は 'wget https:// bootstrap.pypa.io/get-pip.py'をどこでも'/usr/local/lib/python3.5/dist-packages'に置く必要がありますか?(サイドコメントとして、私はDockerコンテナに入っていますので、心配する必要はありません)(別のサイドコメント、 'wget'がなければapt-get install wget') –

+1

'/ usr/local/lib/python3.5/dist-packages'から' wget'を実行しないでください。私は 'wget'の前にホームディレクトリにあなたを連れてくる普通の' cd'を含んでいました。 –

+0

ちょうど好奇心から、どうして?また、 'python3.5 -m'コマンドは本当に素晴らしいです!私はpython3.5のための適切なバージョンのpipを実行することを本質的に保証します。だから私は古い 'pip3'を何とかオーバーライドできず、Python 3.5の私のバージョンを永久に指し示すことができますか? –

関連する問題