【问题标题】:Cannot install lxml via pip无法通过 pip 安装 lxml
【发布时间】:2016-06-06 20:59:14
【问题描述】:

我想通过 pip 安装 lxml,但它只是停止,没有任何错误或某事。当我执行

pip install lxml -vvv

我明白了,它停在了这条线上:

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/libxml2 -Isrc/lxml/includes -I/usr/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-armv6l-2.7/src/lxml/lxml.etree.o -w

我可以离开控制台一个小时。什么都没有发生。没有错误信息。没有什么。

PS:是的,

libxml2-dev libxslt-dev python-dev

都安装好了。

【问题讨论】:

  • armv6l?它运行在什么平台和确切的操作系统上?
  • Raspberry Pi 与 Wheezy Raspbian。
  • 它不是编译机。可能需要那么长时间。也许您对 OS 包更满意。 AFAIR 是python-lxml,
  • 有道理。这确实是可能的。感谢您的回答和时间。
  • 在我的笔记本电脑上需要一段时间,所以在 pi 上编译可能需要很长时间,apt-get 版本将比最新版本落后一些版本。

标签: python raspberry-pi lxml


【解决方案1】:

对于所有遇到相同问题的人:Raspberry Pi 上的编译过程非常缓慢。它只是没有足够的力量。不要那样做,这没什么好玩的。

【讨论】:

    【解决方案2】:

    为什么这不起作用很简单。编译 Python 的 lxml 包只需要比您为其分配的 RAM 多一点。 100MB 加上 512MB RAM 的默认交换空间意味着 gcc 和 kswapd 从字面上相互对抗。它可能会一直保留在 lxml.etree.c 直到结束。

    如何进行:

    首先我们确定是什么消耗了大量内存

    ps aux | head -1; ps aux | sort -rnk 4 | head -5
    

    并暂时终止相应的恶魔和进程。 之后,我们将交换文件扩展为 2GB。

    sudo dphys-swapfile swapoff
    

    关闭交换。 然后编辑/etc/dphys-swapfile,修改变量CONF_SWAPSIZE

    CONF_SWAPSIZE = 2048
    

    运行

    dphys-swapfile setup
    

    这将创建和初始化文件。

    sudo dphys-swapfile swapon
    

    再次打开交换。


    Home Assistant 需要这个,因为它需要 Python 3.8 并且不在软件包提要中。

    在我的 Raspberry Pi Zero 上

    pip3 install lxml
    

    大约花了。 70 分钟。

    【讨论】: