python-3.x - 如何摆脱密码编译错误?

标签 python-3.x docker

我正在尝试构建一个dockerfile,但问题是当它尝试专门构建加密时,没有构建。
我的Dockerfile

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时,它显示:
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的新手,请帮助解决这个问题。

最佳答案

由于错误是...

error: Can not find Rust compiler
...解决方案是安装rust编译器。您还需要cargo,Rust包管理器,它看起来像您的Dockerfile缺少openssl-dev
以下为我成功构建了:
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执行。

关于python-3.x - 如何摆脱密码编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66118337/

相关文章:

python - 如何在aiohttp中发回图像/文件

docker - 如何将构建输出重定向到文件?

docker - 与 Docker 容器共享现有主机目录?

python-3.x - 类型错误 : object of type 'numpy.int64' has no len()/TypeError: object of type 'int' has no len()/while using classification_report in scikitlearn

python - 从 Pandas 中引用 CSV

django - 在MacOS 10.15上安装Psycopg2 python 3.7时出错

mysql - 从 docker 容器记录 mysql 查询

python - 如何对 N 个元素的列表进行排序,然后用 -1 替换 0 到 N 之间的缺失值

shell - docker-compose,导出环境变量在 Jenkins 中不起作用

docker - 如何在拥有私有(private) docker 注册表服务器的同时将 docker 与 gradle 一起使用