Pip install Matplotlib kullanılırken bellek hatası


91

Python 2.7 kullanıyorum, Matplotlib'i kurmaya çalışırsam "pip install matplotlib" kullanırsam bu hatayı alıyorum

 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"

Sorun ne olabilir? Ahududu Pi 2'yi 16gb SD kart ile kullanıyorum. Hala 8gb veriye sahibim ama yine de bu hatayı alıyorum. Kibarca yardım

Yanıtlar:


295

Bu hata ortaya çıkıyor çünkü pip'in önbelleğe alma mekanizması tüm dosyayı önbelleğe almadan önce belleğe okumaya çalışıyor… matplotlib ~ 50mb olduğu için sınırlı bellek ortamında sorun yaratıyor.

Sabit alanlı bir önbelleğe alma algoritması kullanmak için pip yama uygulanana kadar daha basit bir çözüm, önbellekten kaçınmak için pipbirlikte çalıştırmaktır --no-cache-dir:

$ pip --no-cache-dir install matplotlib

9
Raspberry Pi'de bu sorunu yaşadım. Çözüldü!
fdelia

7
Ayrıca Raspberry Pi 2A'da bu sorunu yaşadım ve bu sorunu çözdü!
8one6


1
Raspberry Pi 3B + üzerinde aynı sorunla karşılaşıldı ve yukarıdaki talimatlar kullanılarak çözüldü.
Charles Poon

1
Matplotlib'i BeagleBone Black üzerine kurarken bu problemle karşılaşıldı. Bu çözüm onu ​​düzeltti. Teşekkür ederim!
David Stein

31

Matplotlib'i sıfırdan kurmak için yeterli RAM'iniz yok gibi görünüyor. Bunun üstesinden gelmek için takas özelliğini açın:

# 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

Veya, SD kartınızda raspbian kuruluysa, matplotlib'i depodan kurabilirsiniz:

apt-get install python-matplotlib

Merhaba, takas etmeyi denedim ama yine de aynı hatayı alıyorum.
nishanth anand

"sudo apt-get install matplotlib" verirsem, "E: paket matplotlib bulunamıyor" diyorsa ne yapmalı? Öyle yardıma pls linux yeni am
nishanth Anand

Paketin tam adını hatırlamıyorum (ve RPi'mi evde bulunduruyorum), ancak bunu yayınlayarak öğrenebilirsiniz sudo apt-cache search matplotlib. Bu size tam adı vermelidir.
Andrey Sobolev

Matplotlib için apt-cache aramayı denediniz mi? Görünüşe göre paket için doğru isim python-matpolotlib.
Andrey Sobolev

Merhaba, takas dosyası yöntemi benim için bir Pi 2 ve standart bir 8 Gb SD ile çalıştı. Takas için çok az bir miktar kullanıldığından, SD boyutu prosedürde herhangi bir fark yaratmamalıdır. Sadece bir ayrıntı, sudoAndrey'in cevabındaki tüm takas oluşturma ve işleme komutlarını yazdım . Bu kılavuz olarak sanal bir ortam kullanıyorum: ( pyimagesearch.com/2015/02/23/… ) gerçekten yararlı oldu.
Hugh Barnard

6

--no-cache-dirbenim için çalışmadı. Tüm uygulamaları kapattım ve ancak o zaman yüklemeyi tamamlayabildim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.