web-dev-qa-db-ja.com

ImportError:名前 'multiarray'をインポートできません

here の説明に従ってPython3.6をインストールしました。

Sudo add-apt-repository ppa:jonathonf/python-3.6
Sudo apt-get update
Sudo apt-get install python3.6

次に、次のようにnumpyをインストールしました:

Sudo apt-get install python3-numpy

Python3.5からnumpyをインポートできますが、Python3.6からはインポートできないと思います

Python 3.6.5 (default, Mar 29 2018, 03:28:50) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/usr/lib/python3/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python3/dist-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/usr/lib/python3/dist-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 14, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray'

この問題を修正する方法は?

1

おそらくpython3.5にのみnumpyがインストールされています。

Ubuntuリポジトリを介してnumpyをインストールする代わりに、pipをインストールして使用することもできます。
これはpythonのパッケージマネージャーです。これを使用して、numpyのようなさまざまなpythonライブラリをインストールできます。
それを使用して、python3.6のnumpyをインストールします。

pipのインストール:

次のコマンドでpipをインストールします。

apt install python-pip

注:Permission deniedエラーが表示される場合があります。この場合、コマンドの前にSudoを付けるだけです:例:

Sudo apt install python-pip

次に、端末にpip3.6と入力して、正しくインストールされているかどうかを確認します。使用可能なすべてのパラメーターが一覧表示されます。

通常、ここから2つのオプションがあります。

オプション1-numpyをグローバルにインストール

Python3.6専用のnumpyをインストールします。

pip3.6 install numpy

注:再度、許可エラーを受け取った場合、コマンドの前にSudoを付けます:

Sudo pip3.6 install numpy

出力:

Collecting numpy
  Downloading https://files.pythonhosted.org/packages/71/90/ca61e203e0080a8cef7ac21eca199829fa8d997f7c4da3e985b49d0a107d/numpy-1.14.3-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)
    100% |################################| 12.2MB 1.9MB/s 
Installing collected packages: numpy
Successfully installed numpy-1.14.3

注:この方法の欠点は、numpyがグローバルにインストールされていることです。これにより、異なるバージョンでのトラブルなど、将来のある時点で望ましくない影響が生じる可能性があります。

オプション2-仮想環境を使用します。

この方法を使用すると、依存関係、バージョン、権限をあまり気にせずに、Pythonパッケージをインストールできるサンドボックスである分離されたpython環境を作成できます。

最初に、仮想環境を作成するために必要なモジュールをインストールする必要があります。

Sudo pip3.6 install virtualenv

再度、インストールが成功したかどうかを確認します。

virtualenv --version

エラーメッセージなしでバージョンを印刷する必要があります。

Python3.6の仮想環境を作成します(参考-それを実現する方法は複数あります)。

virtualenv /directory/to/place/the/virtual/environment

例えば.

virtualenv ~/Documents/numpy

そのディレクトリに移動します。その中にいくつかのディレクトリがあるはずです。 binディレクトリを探しています。
次に、その仮想環境をアクティブにする必要があります。

source bin/activate

仮想環境の名前は、端末の左側に表示されます。例:

(numpy) user@hostname:numpy$

仮想環境が現在アクティブであることを示します。

OK、今すぐインストールする必要がありますnumpy

pip3.6 install numpy

出力:

Collecting numpy
  Using cached https://files.pythonhosted.org/packages/71/90/ca61e203e0080a8cef7ac21eca199829fa8d997f7c4da3e985b49d0a107d/numpy-1.14.3-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: numpy
Successfully installed numpy-1.14.3

Pythonシェルを起動して、インポートを試みます。

>>> import numpy
>>> 

エラーはないはずです。
作業を続行できます。

完了したら、仮想環境を非アクティブ化できます。入力するだけです:

deactivate

左側のインジケータが消えているはずです。

仮想環境で何か問題が発生した場合は、それを含むディレクトリを削除して最初からやり直してください。

注:仮想環境を使用する場合の欠点は、常にアクティブ化および非アクティブ化する必要があることですが、グローバルにインストールされたライブラリと設定を台無しにする変更を大幅に削減します。

2
haralambov

私は同じ問題を抱えていました。次のようにnumpyパッケージを更新することでこのエラーを修正しました。

Sudo pip install -U numpy


[NOTE]:

その後、次のエラーが発生した場合:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

次のコマンドを実行します。

Sudo apt-get install python3-tk
0
Benyamin Jafari