使用系统包管理器安装

使用系统包管理器安装

我正在尝试 alpine-linux,但它没有按预期工作。

我尝试使用,pip install cryptography但它需要很长时间并停止在这个难以理解的输出上

Running command /usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-h925mzyj/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__f le__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-gdaazboj --python-tag cp36

我能做什么呢?

答案1

对于大多数带有 C/C++ 扩展(用 C/C++ 编写的代码,编译为共享对象并通过外部函数库加载到 Python 中)的 Python 包来说,Alpine 是一个令人头疼的发行版。其原因在于公众号 513Linux 发行版之间的可移植性定义manylinux1基于 glibc/glibcxx。由于Alpine使用musl libc,因此manylinux1Alpine上无法安装兼容的wheel。因此,当您发出 时pip install cryptography,带有已编译扩展的轮子将被过滤,并pip尝试从源代码构建带有所有 C 扩展的包。

使用系统包管理器安装

这是首选方式,@GracefulRestart 在评论中提到过;如果您不需要该软件包的前沿版本,请使用它。Alpine 提供预构建cryptography,目前是cryptography<=2.1.4.安装它apk

$ apk add py-cryptography

使用 pip 安装

如果您需要前沿版本,您可以尝试通过安装从源代码构建它pip

准备构建环境

您将需要带有头文件的编译器和库:musl、OpenSSL、libffi 和 Python 本身:

$ apk add gcc musl-dev libffi-dev openssl-dev python3-dev

建筑

pip install pkgname默认隐藏构建日志。要查看完整的构建日志,请添加-vvv以增加详细程度。 (可选)此外,您可以manylinux1通过添加来明确禁止安装轮子--no-binary=pkgname,以便强制从源构建。

$ pip install cryptography -vvv --no-binary=cryptography

相关内容