【问题标题】:Error installing PyPI xmlsec==1.3.3 Python2安装 PyPI xmlsec==1.3.3 Python2 时出错
【发布时间】:2021-05-31 12:44:41
【问题描述】:

我正在使用 arch 并在 virtualenv (python 2.7) 中使用 pip 20.3.4 安装此 xmlsec 包
虽然官方页面(github和pypi)并没有特别包含arch依赖,但我认为我已经安装了所有的。

我已经安装了:

extra/xmlsec 1.2.32-1 [installed]
community/python-xmlsec 1.3.11-1 [installed]
extra/libxml2 2.9.10-9 [installed]
extra/libxml++ 3.2.3-1 [installed]
multilib/lib32-libxml2 2.9.10-4 [installed]

我的 gcc 版本是 11.1.0

我收到此错误:

Requirement already satisfied: pkgconfig in ./cen/lib/python2.7/site-packages (from xmlsec==1.3.3) (1.5.2)
Requirement already satisfied: lxml>=3.0 in ./cen/lib/python2.7/site-packages (from xmlsec==1.3.3) (4.0.0)
Building wheels for collected packages: xmlsec
Building wheel for xmlsec (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /home/astanwar99/DevSpace/central/cen/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-E6BWHU/xmlsec/setup.py'"'"'; __file__='"'"'/tmp/pip-install-E6BWHU/xmlsec/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-y4lh42
    cwd: /tmp/pip-install-E6BWHU/xmlsec/
Complete output (53 lines):
running bdist_wheel
running build
running build_ext
building 'xmlsec' extension
creating build
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/tmp
creating build/temp.linux-x86_64-2.7/tmp/pip-install-E6BWHU
creating build/temp.linux-x86_64-2.7/tmp/pip-install-E6BWHU/xmlsec
creating build/temp.linux-x86_64-2.7/tmp/pip-install-E6BWHU/xmlsec/src
gcc -pthread -fno-strict-aliasing -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -DNDEBUG -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fPIC -DMODULE_NAME=xmlsec -DMODULE_VERSION=1.3.3 -DXMLSEC_CRYPTO_DY.....
.
.
In file included from /tmp/pip-install-E6BWHU/xmlsec/src/constants.c:10:
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c: In function ‘PyXmlSec_ConstantsModule_Init’:
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c:278:50: error: ‘xmlSecXkmsNs’ undeclared (first use in this function); did you mean ‘xmlSecXPathNs’?
    278 |     tmp = PyString_FromString((const char*)(JOIN(xmlSec, name))); \
        |                                                  ^~~~~~
/tmp/pip-install-E6BWHU/xmlsec/src/common.h:21:23: note: in definition of macro ‘DO_JOIN2’
    21 | #define DO_JOIN2(X,Y) X##Y
        |                       ^
/tmp/pip-install-E6BWHU/xmlsec/src/common.h:19:19: note: in expansion of macro ‘DO_JOIN1’
    19 | #define JOIN(X,Y) DO_JOIN1(X,Y)
        |                   ^~~~~~~~
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c:278:45: note: in expansion of macro ‘JOIN’
    278 |     tmp = PyString_FromString((const char*)(JOIN(xmlSec, name))); \
        |                                             ^~~~
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c:288:5: note: in expansion of macro ‘PYXMLSEC_ADD_NS_CONSTANT’
    288 |     PYXMLSEC_ADD_NS_CONSTANT(XkmsNs, "XKMS");
        |     ^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c:278:50: note: each undeclared identifier is reported only once for each function it appears in
    278 |     tmp = PyString_FromString((const char*)(JOIN(xmlSec, name))); \
        |                                                  ^~~~~~
/tmp/pip-install-E6BWHU/xmlsec/src/common.h:21:23: note: in definition of macro ‘DO_JOIN2’
    21 | #define DO_JOIN2(X,Y) X##Y
        |                       ^
/tmp/pip-install-E6BWHU/xmlsec/src/common.h:19:19: note: in expansion of macro ‘DO_JOIN1’
    19 | #define JOIN(X,Y) DO_JOIN1(X,Y)
        |                   ^~~~~~~~
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c:278:45: note: in expansion of macro ‘JOIN’
    278 |     tmp = PyString_FromString((const char*)(JOIN(xmlSec, name))); \
        |                                             ^~~~
/tmp/pip-install-E6BWHU/xmlsec/src/constants.c:288:5: note: in expansion of macro ‘PYXMLSEC_ADD_NS_CONSTANT’
    288 |     PYXMLSEC_ADD_NS_CONSTANT(XkmsNs, "XKMS");
        |     ^~~~~~~~~~~~~~~~~~~~~~~~
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for xmlsec
Running setup.py clean for xmlsec
Failed to build xmlsec
Installing collected packages: xmlsec
    Running setup.py install for xmlsec ... error
    ERROR: Command errored out with exit status 1:

感谢大家的帮助。

【问题讨论】:

  • 如果您计划在 virtualenv 中使用 pip installing 它,则不需要从 Arch 的 repo 安装 python-xmlsec

标签: python-2.7 pip archlinux xmlsec


【解决方案1】:

XMLSec's PyPI page 表示该库的最新版本仅与 Python 3 兼容。

看起来version 1.3.9 仍然声称与 Python 2 兼容,所以您可能想尝试一下

pip install xmlsec==1.3.9

或者,你知道,更好的是,切换到 Python 3。

【讨论】:

  • @AKK 我想要 xmlsec==1.3.3(添加在标题中)。它是一个项目的依赖项,所以无能为力。但我知道有人在 ubuntu 上使用它。可能是特定于拱门的,但不确定
  • 嗯,你可以试试 1.3.9,不是吗?补丁版本更改不应该破坏事情,但他们可以修复构建。
  • 我尝试了 1.3.9,仍然得到 gcc 相关的错误(但不同)。我相信我缺少某种依赖,
  • 确保你有 libxml2,而不仅仅是 libxml++?
  • 是的,我也有。降级 gcc 有帮助吗?
【解决方案2】:

我能够解决这个问题。

  1. 克隆这个仓库https://github.com/mehcode/python-xmlsec
  2. 查看此commit(仍支持 python 2.7)
  3. 手动更改此commit
  4. 点安装。

更多详情:https://bbs.archlinux.org/viewtopic.php?id=266798

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 2017-09-22
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多