установка с помощью системного менеджера пакетов

установка с помощью системного менеджера пакетов

Я экспериментирую с 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

Alpine — это головная боль для большинства пакетов Python, которые поставляют расширения C/C++ (код, написанный на C/C++, который компилируется в общий объект и загружается в Python через стороннюю библиотеку функций). Причина этого в том, чтоПЭП 513определение переносимости между дистрибутивами Linux, manylinux1, основано на glibc/glibcxx. Поскольку Alpine использует musl libc, manylinux1на Alpine нельзя установить совместимый wheel. Поэтому при запуске pip install cryptographywheel со скомпилированными расширениями фильтруется и 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для увеличения детализации. (Необязательно) Также вы можете явно запретить установку manylinux1wheels, добавив --no-binary=pkgname, чтобы сборка из исходного кода была принудительной.

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

Связанный контент