Развертывание Python, создание колеса для криптографии занимает целую вечность
Я запускаю проект Django Python в Heroku, и для поддержки пакета Python cryptography, мой dockerfile содержит инструкции по первой установке не-Python зависимостей для этого пакета:
run apk add openssl-dev cargo
Затем мой журнал сборки показывает, что развертывание собирает различные колеса. На сборку колеса криптографии уходит несколько минут:
Building wheel for cryptography (PEP 517): started
Building wheel for cryptography (PEP 517): still running...
Building wheel for cryptography (PEP 517): still running...
Building wheel for cryptography (PEP 517): finished with status 'done'
Created wheel for cryptography: filename=cryptography-3.4.7-cp38-cp38-linux_x86_64.whl size=534047 sha256=8c3212278fa23bad7ecfbc54d036e8d35ba9308479d87e8ec39697aed26095dc
Есть ли какой-нибудь предварительно скомпилированный wheel или buildpack или что-то подобное, что я могу использовать для ускорения развертывания?
Судя по вашей команде apk
, скорее всего, вы используете Alpine Linux. Alpine использует musl
для своей реализации libc
, и это исторически препятствовало проекту cryptography
загружать двоичные колеса. Однако, с принятием PEP 656 (и большой последующей работой с auditwheel, контейнерами pypa/manylinux и pypa/warehouse, позволяющими загружать колеса) мы теперь можем загружать musllinux
колеса. cryptography
загрузил колесо для cryptography 3.4.8 (арка x86_64) 19 сентября 2021 года.
Для получения этого колеса есть два необходимых условия:
- Вам необходимо обновить версию до последней
pip
. Ни одна версия старше 21.2.4 не поддерживаетmusllinux
колеса. - Вам необходимо убедиться, что вы устанавливаете криптографию >= 3.4.8. Более старые версии не имеют этих колес.
Если вы соответствуете этим требованиям, то pip install cryptography
больше не будет требоваться компилятор (rust или gcc/clang) на Alpine.