pip installMatplotlibの使用中にメモリエラーが発生しました


91

Python 2.7を使用していますが、Matplotlibをインストールしようとすると、「pipinstallmatplotlib」を使用するとこのエラーが発生します。

 Exception:
  Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 232, in main
      status = self.run(options, args)
    File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 339, in run
      requirement_set.prepare_files(finder)
    File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 355, in prepare_files
      do_download, session=self.session,
    File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 782, in unpack_url
      session,
    File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 667, in unpack_http_url
      from_path, content_type = _download_http_url(link, session, temp_dir)
    File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 843, in _download_http_url
      _download_url(resp, link, content_file)
    File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 615, in _download_url
      for chunk in progress_indicator(resp_read(4096), 4096):
    File "/usr/local/lib/python2.7/dist-packages/pip/utils/ui.py", line 46, in iter
      for x in it:
    File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 580, in resp_read
      decode_content=False):
    File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/response.py", line 256, in stream
      data = self.read(amt=amt, decode_content=decode_content)
    File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/response.py", line 186, in read
      data = self._fp.read(amt)
    File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/cachecontrol/filewrapper.py", line 54, in read
      self.__callback(self.__buf.getvalue())
    File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/cachecontrol/controller.py", line 205, in cache_response
      self.serializer.dumps(request, response, body=body),
    File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/cachecontrol/serialize.py", line 81, in dumps
      ).encode("utf8"),
  MemoryError"

問題は何でしょうか?私は16GBのSDカードでラズベリーパイ2を使用しています。私はまだ8GBのデータを無料で持っていますが、それでもこのエラーが発生します。親切に助けて

回答:


297

このエラーが発生しているのは、pipのキャッシュメカニズムがファイル全体をメモリに読み取ってからキャッシュしようとしているためです。matplotlibは約50 MBであるため、メモリが限られた環境で問題が発生します。

定数スペースキャッシュアルゴリズムを使用するようにpipにパッチが適用されるまでのより簡単な解決策は、キャッシュを回避するために実行pipする--no-cache-dirことです。

$ pip --no-cache-dir install matplotlib

9
RaspberryPiでこの問題が発生しました。解決しました!
fdelia 2016

7
Raspberry Pi 2Aでもこの問題が発生し、これで解決しました。
8one6 2017年

2
なぜ私の
vagrantboxが

1
Raspberry Pi 3B +で同じ問題が発生し、上記の手順を使用して解決しました。
チャールズプーン2017

1
BeagleBoneBlackにmatplotlibをインストールするときにこの問題が発生しました。このソリューションはそれを修正しました。ありがとうございました!
デビッドスタイン

31

matplotlibを最初から構築するにはRAMが不足しているようです。これを克服するには、スワップをオンにします。

# create swap file of 512 MB
dd if=/dev/zero of=/swapfile bs=1024 count=524288
# modify permissions
chown root:root /swapfile
chmod 0600 /swapfile
# setup swap area
mkswap /swapfile
# turn swap on
swapon /swapfile

または、SDカードにraspbianがインストールされている場合は、リポジトリからmatplotlibをインストールできます。

apt-get install python-matplotlib

こんにちは、私はスワッピングを試みましたが、それでも同じエラーが発生します。
nishanth anand 2015

「sudoapt-getinstall matplotlib」を指定すると、「E:パッケージmatplotlibが見つかりません」と表示されます。どうすればよいですか?私はLinuxを初めて使用するので、plsが役立ちます
nishanth anand 2015

パッケージの正確な名前を覚えていません(そして私のRPiを家に持っています)が、を発行することでそれを見つけることができますsudo apt-cache search matplotlib。これにより、正確な名前がわかります。
アンドレイソボレフ2015

apt-cacheでmatplotlibを検索してみましたか?パッケージの正しい名前はpython-matpolotlibです。
アンドレイソボレフ2015

こんにちは、swapfileメソッドはPi2と標準の8GbSDで機能しました。スワップに使用されるのはごくわずかであるため、SDサイズによって手順に違いが生じることはありません。詳細については、sudoAndreyの回答にあるすべてのスワップ作成および操作コマンドを編集しました。私はこのガイドとして仮想環境を使用しています:(pyimagesearch.com/2015/02/23/…)これは本当に役に立ちました。
ヒューバーナード2015年

6

--no-cache-dir私にはうまくいきませんでした。すべてのアプリを閉じたところ、インストールを完了できました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.