如何在Cygwin 下的Python 3.8 中安装lxml?
How to install lxml in Python 3.8 under Cygwin?
我一直在尝试使用 pip install
在 Python3.8 下安装 cython
和 lxml
软件包Cygwin。然而,这反复失败,并出现难以理解的错误,从 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
好的...
那么问题是什么?
相关问题:
- libxml install error using pip
- Python 2.7 pip install lxml in virtualenv fails on Cygwin
- Cygwin gcc issue - cannot find 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
文件中。
我一直在尝试使用 pip install
在 Python3.8 下安装 cython
和 lxml
软件包Cygwin。然而,这反复失败,并出现难以理解的错误,从 python 错误到找不到 gcc 头文件,即使它们存在。
因为 lxml
依赖于 Cython
,我们需要先确保它能正常工作。不幸的是,Cygwin 的 python3.8 似乎还不支持 cython。所以我们被告知从 here.
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
好的...
那么问题是什么?
相关问题:
- libxml install error using pip
- Python 2.7 pip install lxml in virtualenv fails on Cygwin
- Cygwin gcc issue - cannot find 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
文件中。