2015-04-06 109 views
49

我使用Python 2.7,如果我嘗試安裝,如果我用「畫中畫安裝matplotlib」內存錯誤PIP安裝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" 

什麼可能的問題是Matplotlib我得到這個錯誤? 我使用樹莓派2與16GB SD卡。我仍然有8GB數據免費,但仍然得到這個錯誤。 請幫忙

回答

17

看起來你沒有足夠的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 

或者,如果您安裝在SD卡上有raspbian,您可以從系統信息庫安裝matplotlib:

apt-get install python-matplotlib 
+0

嗨,我嘗試交換,但我仍得到相同的錯誤。 – 2015-04-06 08:28:43

+0

如果我給「sudo apt-get安裝matplotlib」它說「E:無法找到軟件包matplotlib」應該做什麼?我是linux新手,所以請幫助 – 2015-04-06 08:29:54

+0

我不記得軟件包的確切名稱(並且在家裏有我的RPi),但是您可以通過發佈'sudo apt-cache search matplotlib'找到它。這應該給你確切的名字。 – 2015-04-07 06:10:15

162

這個錯誤就要到了,因爲,看起來,pip的緩存機制試圖在緩存之前將整個文件讀入內存......這在有限的內存環境中造成問題,因爲matplotlib大約爲50mb。

一個簡單的辦法,直到PIP進行了修補,使用恆定的空間緩存算法,是運行pip--no-cache-dir避免緩存:

$ pip --no-cache-dir install matplotlib 
+0

甜!這很好! – Sherlock70 2016-03-24 08:03:46

+3

在Raspberry Pi上有這個問題。解決了! – fdelia 2016-07-28 15:31:28

+3

在Raspberry Pi 2A上也有這個問題,並解決了它! – 8one6 2017-01-16 20:50:27