Развертывание 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 года.

Для получения этого колеса есть два необходимых условия:

  1. Вам необходимо обновить версию до последней pip. Ни одна версия старше 21.2.4 не поддерживает musllinux колеса.
  2. Вам необходимо убедиться, что вы устанавливаете криптографию >= 3.4.8. Более старые версии не имеют этих колес.

Если вы соответствуете этим требованиям, то pip install cryptography больше не будет требоваться компилятор (rust или gcc/clang) на Alpine.

Вернуться на верх