问题解决:树莓派上Python用pip进行安装耗尽内存,卡死

    xiaoxiao2023-10-29  180

    我的树莓派版本是 Raspberry Pi 3,系统是 Ubuntu 18.04。 最近在树莓派上用Python3 的pip3进行安装时,经常会耗尽内存,卡死在那里不动了。

    具体的效果如下:

    -> # pip3 install grequests Collecting grequests Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from grequests) Collecting gevent (from grequests) Using cached https://files.pythonhosted.org/packages/ed/27/6c49b70808f569b66ec7fac2e78f076e9b204db9cf5768740cff3d5a07ae/gevent-1.4.0.tar.gz Requirement already satisfied: greenlet>=0.4.14 in /usr/local/lib/python3.6/dist-packages (from gevent->grequests) Building wheels for collected packages: gevent Running setup.py bdist_wheel for gevent ... -

    就是卡死在Running setup.py这一步。

    然后我发现Python2的pip也会发生这个问题,于是我想找到问题的原因。

    我用htop发现pip程序占用了系统150M的内存,因为系统以及有很多东西在跑了,所以内存直接炸了,溢出了。

    解决方法1

    在网上查阅资料后解决方法1如下:

    pip3 --no-cache-dir install grequests

    但这个解决方法并不适合我

    解决方法2

    这个办法就是把其他程序关闭,给pip更多的内存。

    然后安装时内存从430M-> 715M,消耗了整整285M内存。

    消耗内存最多的是这个程序:

    /usr/lib/gcc/aarch64-linux-gnu/7/cc1 -quiet -I build/temp.linux-aarch64-3.6/libev -I src/gevent/libev -I /tmp/pip-build-4_bg56_j/gevent/deps/libev -I /usr/include/python3.6m -imultiarch aarch64-linux-gnu -D_REENTRANT -D NDEBUG -D _FORTIFY_SOURCE=2 -D LIBEV_EMBED=1 -D EV_COMMON= -D EV_CLEANUP_ENABLE=0 -D EV_EMBED_ENABLE=0 -D EV_PERIODIC_ENABLE=0 src/gevent/libev/corecext.c -quiet -dumpbase corecext.c -mlittle-endian -mabi=lp64 -auxbase-strip build/temp.linux-aarch64-3.6/src/gevent/libev/corecext.o -g -g -O2 -Wall -Wformat=1 -Werror=format-security -Wdate-time -fwrapv -fstack-protector-strong -fPIC -fstack-protector-strong -Wformat-security -o /tmp/ccrWKAmy.s

    有谁知道上面这个程序为什么消耗内存那么多的原因,请告诉我。

    然后我尝试了pip install pwntools,内存从430M-> 760M,最多时消耗了整整330M内存。

    占用最多的是这个程序:

    /usr/lib/gcc/aarch64-linux-gnu/7/cc1 -quiet -I include -imultiarch aarch64-linux-gnu -D CAPSTONE_USE_SYS_DYN_MEM -D CAPSTONE_HAS_ARM -D CAPSTONE_HAS_ARM64 -D CAPSTONE_HAS_M68K -D CAPSTONE_HAS_MIPS -D CAPSTONE_HAS_POWERPC -D CAPSTONE_HAS_SPARC -D CAPSTONE_HAS_SYSZ -D CAPSTONE_HAS_X86 -D CAPSTONE_HAS_XCORE -D CAPSTONE_HAS_TMS320C64X -D CAPSTONE_HAS_M680X -D CAPSTONE_HAS_EVM arch/AArch64/AArch64Disassembler.c -quiet -dumpbase AArch64Disassembler.c -mlittle-endian -mabi=lp64 -auxbase-strip arch/AArch64/AArch64Disassembler.o -O3 -Wall -Wwrite-strings -fPIC -fvisibility=hidden -fstack-protector-strong -Wformat-security -o /tmp/ccUmZ7Pr.s
    最新回复(0)