Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 没有名为';密码学&x27;阿尔卑斯码头工人_Python_Docker_Cryptography_Alpine - Fatal编程技术网

Python 没有名为';密码学&x27;阿尔卑斯码头工人

Python 没有名为';密码学&x27;阿尔卑斯码头工人,python,docker,cryptography,alpine,Python,Docker,Cryptography,Alpine,我正在尝试运行脚本,该脚本使用python电报机器人模块将消息发送到电报。 脚本在阿尔卑斯山的docker中运行 脚本无法导入电报,我收到一个错误ModuleNotFoundError:没有名为“cryptography”的模块 我的docker文件 FROM nickgryg/alpine-pandas:3.7.7 as base FROM base as builder RUN pip install --upgrade pip RUN mkdir /install RUN apk up

我正在尝试运行脚本,该脚本使用python电报机器人模块将消息发送到电报。 脚本在阿尔卑斯山的docker中运行

脚本无法导入电报,我收到一个错误ModuleNotFoundError:没有名为“cryptography”的模块

我的docker文件

FROM nickgryg/alpine-pandas:3.7.7 as base
FROM base as builder

RUN pip install --upgrade pip

RUN mkdir /install
RUN apk update && apk add postgresql-dev gcc musl-dev python3-dev libffi-dev openssl-dev 
WORKDIR /install
COPY requirements.txt /requirements.txt
RUN pip install --install-option="--prefix=/install" -r /requirements.txt
FROM base
COPY --from=builder /install /usr/local
COPY src /app
RUN apk --no-cache add libpq 
WORKDIR /app
requirements.txt如下

certifi==2020.4.5.1
chardet==3.0.4
Django==3.0.3
future==0.18.2
idna==2.9
pandas==1.0.3
pycountry==19.8.18
python-dateutil==2.8.1
pytz==2019.3
requests==2.23.0
six==1.14.0
sqlparse==0.3.1
urllib3==1.25.8
vertica-python==0.10.3
currencyconverter==0.14.1
python-telegram-bot==12.6.1
psycopg2==2.8.5
我还尝试向dockerfile添加行
添加apk py3加密
,但没有帮助


我发现了许多与密码问题有关的问题,但没有解决办法。

您使用的图像是alpine。如果您对加密模块有依赖关系,请按照以下步骤进行修复

在Linux上构建加密
Cryptography
ships
manylinux
wheels(从2.0开始),因此包含所有依赖项。对于pip 8.1或更高版本的用户,在兼容的发行版上运行
manylinux1
manylinux2010
时(除了
Alpine
),您需要做的就是:

$pip安装加密
如果您在Alpine上,或者只是想自己编译它,那么加密需要一个编译器、Python的头(如果您没有使用
pypy
),以及系统上可用的
OpenSSL
libffi
库的头

阿尔卑斯山 如果您使用的是python 2,请将
python3-dev
替换为
python-dev

$sudo apk add gcc musl dev python3 dev libffi dev openssl dev
如果您在
openssl-dev
中遇到错误,您可能必须使用
libressl-dev.

因此,对Dockerfile中的上述
apk
给定包进行更改应该是可行的


以防万一,如果您想了解其他操作系统发行版的更多详细信息,可以在和上的部分找到。

我自己解决了它。由于映像是分两个阶段构建的,我现在在第一个阶段没有安装加密技术,它被打包到一个轮子文件中。然后将其复制并安装到新映像中

FROM nickgryg/alpine-pandas as base
FROM base as builder

RUN pip install --upgrade pip

RUN mkdir /install
RUN apk update && apk add gcc musl-dev python3-dev libffi-dev openssl-dev libc-dev postgresql-dev 
WORKDIR /install
COPY requirements.txt /requirements.txt
RUN pip install --install-option="--prefix=/install" -r /requirements.txt

RUN mkdir /wheels
WORKDIR /wheels
RUN pip wheel cryptography

FROM base
RUN apk add libressl
COPY --from=builder /install /usr/local
COPY --from=builder /wheels /wheels
RUN pip install /wheels/*.whl
COPY src /app
RUN apk --no-cache add libpq 
WORKDIR /app

向我们展示您在
copy src/app
lineRun
python-m pip install
中复制到容器中的python源代码,您可以发布
docker build
命令的完整输出吗?尝试添加此库
libssl dev
libressl dev应该用于alpine,我尝试了,但没有任何效果谢谢您的答案。但这些都是密码学官方安装指南中的指南。我已经试过了,没用。所有请求的LIB都在我的dockerfile中,这可以在我的问题中看到