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

时间:2019-10-15 14:48:49

标签: python cygwin lxml cython python-3.8

我一直试图使用pip install Cygwin Python3.8 下安装cythonlxml软件包。但是,此操作反复失败,并出现难以理解的错误,从python错误到找不到gcc头文件,即使它们在那里。

由于lxml取决于Cython,因此我们需要确保首先进行工作。不幸的是,看来Cygwin的python3.8尚不支持cython。因此,我们被告知从here下载并使用 wheel

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

好吧...

那是什么问题?


相关问题:

1 个答案:

答案 0 :(得分:0)

唯一可行的方法是下载源代码并从那里安装。步骤是这样的:

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文件中。