首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电报-python-bot ImportError无模块名为“密码学”阿尔卑斯码头

电报-python-bot ImportError无模块名为“密码学”阿尔卑斯码头
EN

Stack Overflow用户
提问于 2020-04-23 13:21:46
回答 2查看 781关注 0票数 3

我正在尝试运行脚本,该脚本使用python-电报-bot模块向电报发送消息。剧本在阿尔卑斯山的码头上运行。

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

我的码头文件

代码语言:javascript
复制
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在下面

代码语言:javascript
复制
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中添加行add apk py3-cryptography,但这并没有帮助。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-27 15:01:46

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

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2020-04-26 18:12:53

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

在Linux上构建密码学

Cryptography提供了manylinux车轮(从2.0开始),因此所有依赖项都包括在内。对于在PIP8.1或更高版本上运行于manylinux1manylinux2010兼容发行版(除了Alpine之外的几乎所有内容)上的用户,您需要做的就是:

代码语言:javascript
复制
$ pip install cryptography

如果您在高山上,或者只想自己编译它,那么密码学需要编译器、Python的头(如果不使用pypy)以及系统上可用的OpenSSLlibffi库的标头。

阿尔卑斯山

如果使用Python2,则用python3-dev替换为python-dev

代码语言:javascript
复制
$ sudo apk add gcc musl-dev python3-dev libffi-dev openssl-dev

如果您在openssl-dev中遇到错误,您可能不得不使用libressl-dev.

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

以防万一,如果您想了解其他OS发行版的更多细节,可以在关于密码学官方网站密码学GitHub的节中找到。

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

https://stackoverflow.com/questions/61388294

复制
相关文章

相似问题

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