首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何摆脱密码学构建错误?

如何摆脱密码学构建错误?
EN

Stack Overflow用户
提问于 2021-02-09 19:43:29
回答 3查看 32.5K关注 0票数 22

我正在尝试构建一个dockerfile,但问题是当它尝试构建特定的密码学不是建筑。

我的Dockerfile

代码语言:javascript
复制
FROM python:3.7-alpine

ENV PYTHONUNBUFFERED 1

RUN apk update \
  # psycopg2 dependencies
  && apk add --virtual build-deps gcc python3-dev musl-dev\
  && apk add postgresql-dev \
  && apk add build-base \
  # Pillow dependencies
  && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
  # CFFI dependencies
  && apk add libffi-dev py-cffi \
  # Translations dependencies
  && apk add gettext \
  # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
  && apk add postgresql-client \
  # cairo
  && apk add cairo cairo-dev pango-dev gdk-pixbuf-dev poppler-utils

# fonts for weasyprint
RUN mkdir ~/.fonts
COPY ./fonts/* /root/.fonts/

# secret key (should be in docker-secrets, or we need to run minikube locally
RUN mkdir /etc/secrets
COPY secret.readme proxy_rsa_key* /etc/secrets/

# Requirements are installed here to ensure they will be cached.
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt

COPY ./compose/local/django/entrypoint /entrypoint
RUN sed -i 's/\r//' /entrypoint
RUN chmod +x /entrypoint

COPY ./compose/local/django/start /start
RUN sed -i 's/\r//' /start
RUN chmod +x /start

COPY ./compose/local/django/celery/worker/start /start-celeryworker
RUN sed -i 's/\r//' /start-celeryworker
RUN chmod +x /start-celeryworker

COPY ./compose/local/django/celery/beat/start /start-celerybeat
RUN sed -i 's/\r//' /start-celerybeat
RUN chmod +x /start-celerybeat

COPY ./compose/local/django/celery/flower/start /start-flower
RUN sed -i 's/\r//' /start-flower
RUN chmod +x /start-flower

WORKDIR /app

ENTRYPOINT ["/entrypoint"]

当我尝试构建dockerfile时,它显示:

代码语言:javascript
复制
Building wheel for cryptography (PEP 517): finished with status 'error'
  ERROR: Command errored out with exit status 1:
  
  error: Can not find Rust compiler
  ----------------------------------------
  ERROR: Failed building wheel for cryptography

我试着去解决,但是我做不到。我是一个新手,在docker.Please帮助下如何摆脱这个问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-09 20:22:56

由于错误是...

代码语言:javascript
复制
error: Can not find Rust compiler

...the的解决方案是安装rust编译器。您还需要cargo,Rust包管理器,它看起来像您的

Dockerfile是不存在的openssl-dev。

以下是为我成功构建的代码:

代码语言:javascript
复制
FROM python:3.7-alpine

ENV PYTHONUNBUFFERED 1

RUN apk add --update \
  build-base \
  cairo \
  cairo-dev \
  cargo \
  freetype-dev \
  gcc \
  gdk-pixbuf-dev \
  gettext \
  jpeg-dev \
  lcms2-dev \
  libffi-dev \
  musl-dev \
  openjpeg-dev \
  openssl-dev \
  pango-dev \
  poppler-utils \
  postgresql-client \
  postgresql-dev \
  py-cffi \
  python3-dev \
  rust \
  tcl-dev \
  tiff-dev \
  tk-dev \
  zlib-dev

RUN pip install cryptography

请注意,上面的apk add ...命令行与您已有的命令行基本相同;我只是简化了多个apk add ...语句放入一个apk add执行。

票数 28
EN

Stack Overflow用户

发布于 2021-02-23 21:28:55

您可以通过在apk add命令前添加以下行来跳过rust安装和其他相关依赖:

代码语言:javascript
复制
ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1
票数 30
EN

Stack Overflow用户

发布于 2021-02-24 01:34:04

有些人可能会来这里(像我一样)寻找Python的修复程序,而不一定是阿尔卑斯山。

有几个选项可用,在github问题。(仅选择其中之一)

  1. 你可以安装rust,就像另一个答案提到的那样
  2. 你可以降级你的cryptography版本至3.4.x

3. 您可以升级到pip版本19.1.1或更高版本,该版本会安装预编译包

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66118337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档