如何在 Cygwin 下的 Python 3.8 中安装 lxml?



我一直在尝试使用pip installCygwin上的Python3.8下安装cythonlxml包。但是,这反复失败,出现难以理解的错误,从 python 错误到 gcc 头文件找不到,即使它们在那里。

因为lxml取决于Cython,我们需要确保我们首先让它工作。不幸的是,Cygwin的python3.8似乎还不支持cython。因此,我们被告知从这里下载并使用轮子

pip install Cython-0.29.13-cp38-cp38-win32.whl
# This fails with:
#ERROR: Cython-0.29.13-cp38-cp38-win32.whl is not a supported wheel on this platform.
# Instead use:
pip install Cython --install-option="--no-cython-compile"
# OK!

现在让我们尝试安装lxml包。

pip install lxml
# FAIL
STATIC_DEPS=true pip3 install lxml
# FAIL

让我们检查一下Python.h是否存在:

# find /usr/include -type f -name "Python.h"
/usr/include/python2.7/Python.h
/usr/include/python3.6m/Python.h
/usr/include/python3.8/Python.h

还行。。。

那么问题出在哪里呢?


相关问题:

  • 使用 pip 的 libxml 安装错误
  • Python 2.7 pip install lxml in virtualenv 在 Cygwin 上失败
  • Cygwin gcc 问题 - 找不到 Python.h

似乎唯一有效的是下载源代码并从那里安装。程序是这样的:

git clone https://github.com/lxml/lxml.git lxml
cd lxml
python3.8 setup.py install
pip-date |grep lxml
# lxml     2019-10-15  16:12:05    4.5.0a0   egg    sdist   sys
pip list |grep lxml
# lxml   4.5.0a0

编译失败的原因也可能是因为安装了多个gcc编译器。因此,尽管我还没有对此进行测试,但您可能需要指定(python?(环境应使用哪个编译器。

首先找到路径中的编译器:

# ls -1 /usr/bin/*gcc.exe
/usr/bin/gcc.exe
/usr/bin/i686-w64-mingw32-gcc.exe
/usr/bin/x86_64-pc-cygwin-gcc.exe
/usr/bin/x86_64-w64-mingw32-gcc.exe

然后尝试将正确的导出到CC环境变量(例如(:

export CC=/usr/bin/x86_64-w64-mingw32-gcc.exe

现在再次测试pip install xxx,看看是否有帮助。如果是这样,请将上述行添加到您的~/.bashrc文件中。

您可以使用"setup-x86_64.exe"程序安装它,如官方Cygwin文档(https://cygwin.com/install.html(中所述。安装程序可用于执行全新安装或更新现有安装。 实现此目的的步骤:

  1. 运行安装程序x86_64.exe程序
  2. 选择从互联网安装
  3. 您可以为所有用户安装,也可以只为您安装
  4. 将本地包目录保留原样
  5. 选择直接连接
  6. 使用 https://mirrors.163.com
  7. 然后,将视图更改为"完整",并搜索 python 版本的 lxml

显示如何搜索 lxml

的图像

最新更新