使用pip安装Matplotlib时出现内存错误

nis*_*and 71 python matplotlib

我正在使用Python 2.7,如果我尝试安装Matplotlib我收到此错误,如果我使用"pip install matplotlib"

 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"
Run Code Online (Sandbox Code Playgroud)

问题可能是什么?我使用带有16gb SD卡的raspberry Pi 2.我仍然有8GB数据免费但仍然收到此错误.请帮助

Dav*_*ver 254

这个错误正在发生,因为看来,pip的缓存机制试图在缓存它之前将整个文件读入内存...这在有限内存环境中造成问题,因为matplotlib是~50mb.

一个简单的办法,直到PIP进行了修补,使用恒定的空间缓存算法,是运行pip--no-cache-dir避免缓存:

$ pip --no-cache-dir install matplotlib
Run Code Online (Sandbox Code Playgroud)

  • 在Raspberry Pi上有这个问题.解决了! (7认同)
  • 在Raspberry Pi 2A上也有这个问题,这解决了它! (5认同)
  • 在我的流浪箱中解决了我的问题,尽管我不明白为什么我的流浪箱以如此有限的内存运行 (2认同)
  • 在 Raspberry Pi 3B+ 上遇到同样的问题,并使用上述说明解决。 (2认同)
  • 在 BeagleBone Black 上安装 matplotlib 时遇到此问题。这个解决方案修复了它。谢谢你! (2认同)
  • 谢谢,在有限的内存云实例中也很有用 (2认同)

And*_*lev 24

看来你没有足够的RAM从头开始构建matplotlib.为了克服这一点,要么打开交换:

# 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
Run Code Online (Sandbox Code Playgroud)

或者,如果您在SD卡上安装了raspbian,则可以从存储库安装matplotlib:

apt-get install python-matplotlib
Run Code Online (Sandbox Code Playgroud)


MrK*_*Ksn 6

--no-cache-dir对我不起作用。我刚刚关闭了所有应用程序,然后才能完成安装。