I'm trying to install Odoo on a Debian 12 server in order to recover someone else's website that is built with Odoo 15.
As I don't know Odoo, I follow a tutorial whose link I'm not allowed to paste here, it's for odoo 16 but I replace all occurences with odoo 15.
`pip3 install -r odoo15/requirements.txt` could not build wheels for 4 packages, which I install manually (while in virtual environment):
pip3 install gevent greenlet lxml reportlab
I comment the corresponding lines in `requirements.txt` then re-run the first pip3 command.
After this, I try to run Odoo:
odoo15/odoo-bin
I run into this error: `SystemError: initialization of _psycopg raised unreported exception` which I solve with:
pip3 uninstall psycopg2
pip3 install psycopg2-binary
Then, the beginning of trouble with lxml:
```
Traceback (most recent call last):
File "/opt/odoo/odoo15/odoo-bin", line 5, in
import odoo
File "/opt/odoo/odoo15/odoo/__init__.py", line 134, in
from . import modules
File "/opt/odoo/odoo15/odoo/modules/__init__.py", line 8, in
from . import db, graph, loading, migration, module, registry
File "/opt/odoo/odoo15/odoo/modules/graph.py", line 10, in
import odoo.tools as tools
File "/opt/odoo/odoo15/odoo/tools/__init__.py", line 24, in
from .mail import *
File "/opt/odoo/odoo15/odoo/tools/mail.py", line 18, in
from lxml.html import clean
File "/opt/odoo/odoo15-venv/lib/python3.11/site-packages/lxml/html/clean.py", line 18, in
raise ImportError(
ImportError: lxml.html.clean module is now a separate project lxml_html_clean.
Install lxml[html_clean] or lxml_html_clean directly.
```
I read on another post of this forum that I can solve this by installing an older version of lxml:
pip3 uninstall lxml
pip3 install lxml==4.8.0
But the installation fails, and this time, my research hasn't yielded a workaround. Here is the big (and final) traceback:
```
Collecting lxml==4.8.0
Using cached lxml-4.8.0.tar.gz (3.2 MB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: lxml
Building wheel for lxml (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [115 lines of output]
Building lxml version 4.8.0.
Building without Cython.
Building against libxml2 2.9.14 and libxslt 1.1.35
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-311
creating build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/sax.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/cssselect.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/builder.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-cpython-311/lxml
creating build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml/includes
creating build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/diff.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/defs.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/clean.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/builder.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-cpython-311/lxml/html
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron
copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron
copying src/lxml/etree.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/etree_api.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/__init__.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-cpython-311/lxml/includes
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/rng
copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/rng
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl
copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl
copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
running build_ext
building 'lxml.etree' extension
creating build/temp.linux-x86_64-cpython-311
creating build/temp.linux-x86_64-cpython-311/src
creating build/temp.linux-x86_64-cpython-311/src/lxml
x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -I/usr/include/libxml2 -Isrc -Isrc/lxml/includes -I/opt/odoo/odoo15-venv/include -I/usr/include/python3.11 -c src/lxml/etree.c -o build/temp.linux-x86_64-cpython-311/src/lxml/etree.o -w
src/lxml/etree.c: In function ‘__Pyx_Coroutine_SendEx’:
src/lxml/etree.c:265439:14: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
265439 | f->f_back = PyThreadState_GetFrame(tstate);
| ^~
In file included from /usr/include/python3.11/Python.h:38,
from src/lxml/etree.c:96:
src/lxml/etree.c: In function ‘__Pyx_Coroutine_ResetFrameBackpointer’:
src/lxml/etree.c:265476:19: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
265476 | Py_CLEAR(f->f_back);
| ^~
/usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
24 | #define _Py_CAST(type, expr) ((type)(expr))
| ^~~~
/usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
581 | PyObject *_py_tmp = _PyObject_CAST(op); \
| ^~~~~~~~~~~~~~
src/lxml/etree.c:265476:9: note: in expansion of macro ‘Py_CLEAR’
265476 | Py_CLEAR(f->f_back);
| ^~~~~~~~
In file included from /usr/include/python3.11/Python.h:44:
src/lxml/etree.c:265476:19: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
265476 | Py_CLEAR(f->f_back);
| ^~
/usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
583 | (op) = NULL; \
| ^~
src/lxml/etree.c: In function ‘__Pyx_AddTraceback’:
src/lxml/etree.c:528:62: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
528 | #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
| ^~
src/lxml/etree.c:268244:5: note: in expansion of macro ‘__Pyx_PyFrame_SetLineNumber’
268244 | __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Compile failed: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
creating tmp
cc -I/usr/include/libxml2 -I/usr/include/libxml2 -c /tmp/xmlXPathInit5jnvxno9.c -o tmp/xmlXPathInit5jnvxno9.o
cc tmp/xmlXPathInit5jnvxno9.o -lxml2 -o a.out
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for lxml
Running setup.py clean for lxml
Failed to build lxml
Installing collected packages: lxml
Running setup.py install for lxml ... error
error: subprocess-exited-with-error
× Running setup.py install for lxml did not run successfully.
│ exit code: 1
╰─> [116 lines of output]
Building lxml version 4.8.0.
Building without Cython.
Building against libxml2 2.9.14 and libxslt 1.1.35
running install
/opt/odoo/odoo15-venv/lib/python3.11/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-311
creating build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/sax.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/cssselect.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/builder.py -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-cpython-311/lxml
creating build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml/includes
creating build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/diff.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/defs.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/clean.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/builder.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-cpython-311/lxml/html
copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-cpython-311/lxml/html
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron
copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron
copying src/lxml/etree.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/etree_api.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-cpython-311/lxml
copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/__init__.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-cpython-311/lxml/includes
copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-cpython-311/lxml/includes
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/rng
copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/rng
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl
copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl
copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl
creating build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-cpython-311/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
running build_ext
building 'lxml.etree' extension
creating build/temp.linux-x86_64-cpython-311
creating build/temp.linux-x86_64-cpython-311/src
creating build/temp.linux-x86_64-cpython-311/src/lxml
x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -I/usr/include/libxml2 -Isrc -Isrc/lxml/includes -I/opt/odoo/odoo15-venv/include -I/usr/include/python3.11 -c src/lxml/etree.c -o build/temp.linux-x86_64-cpython-311/src/lxml/etree.o -w
src/lxml/etree.c: In function ‘__Pyx_Coroutine_SendEx’:
src/lxml/etree.c:265439:14: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
265439 | f->f_back = PyThreadState_GetFrame(tstate);
| ^~
In file included from /usr/include/python3.11/Python.h:38,
from src/lxml/etree.c:96:
src/lxml/etree.c: In function ‘__Pyx_Coroutine_ResetFrameBackpointer’:
src/lxml/etree.c:265476:19: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
265476 | Py_CLEAR(f->f_back);
| ^~
/usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
24 | #define _Py_CAST(type, expr) ((type)(expr))
| ^~~~
/usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
581 | PyObject *_py_tmp = _PyObject_CAST(op); \
| ^~~~~~~~~~~~~~
src/lxml/etree.c:265476:9: note: in expansion of macro ‘Py_CLEAR’
265476 | Py_CLEAR(f->f_back);
| ^~~~~~~~
In file included from /usr/include/python3.11/Python.h:44:
src/lxml/etree.c:265476:19: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
265476 | Py_CLEAR(f->f_back);
| ^~
/usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
583 | (op) = NULL; \
| ^~
src/lxml/etree.c: In function ‘__Pyx_AddTraceback’:
src/lxml/etree.c:528:62: error: invalid use of incomplete typedef ‘PyFrameObject’ {aka ‘struct _frame’}
528 | #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)
| ^~
src/lxml/etree.c:268244:5: note: in expansion of macro ‘__Pyx_PyFrame_SetLineNumber’
268244 | __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Compile failed: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
cc -I/usr/include/libxml2 -I/usr/include/libxml2 -c /tmp/xmlXPathInit9uw275jc.c -o tmp/xmlXPathInit9uw275jc.o
cc tmp/xmlXPathInit9uw275jc.o -lxml2 -o a.out
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
× Encountered error while trying to install package.
╰─> lxml
note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
```
When I google "command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1", I am suggested to install new packages. I (re-)installed all these packages with sudo apt: `autoconf build-essential idle-python3 lib32z1-dev libffi-dev libgle3 libjpeg-dev libldap2-dev libpq-dev libqt4-dbus libqt4-network libqt4-script libqt4-test libqt4-xml libqtcore4 libqtgui4 libsasl2-dev libssl-dev libtool libxml2 libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 pkg-config python3-dev python3-libxml2 python3-opengl python3-pil python3-pyrex python3-pyside.qtopengl python3-qt4 python3-qt4-gl python3-setuptools python3.11-dev qt4-designer qt4-dev-tools zlib1g-dev`