【问题标题】:python3 and pip3 in dockerdocker中的python3和pip3
【发布时间】:2019-01-16 07:22:58
【问题描述】:

我想使用python 3.xpip3 在docker 中安装一些python 库。我使用以下命令来执行此操作,但没有安装它们。

FROM alpine:latest

RUN apk add python3 py3-pip3 && \
pip3 install --upgrade pip3 && \
pip3 install wget &&\
pip3 install sys &&\
pip3 install threading &&\
pip3 install time &&\
pip3 install requests &&\
pip3 install paho-mqtt &&\
pip3 install logging &&\
rm -rf /var/cache/apk/*

COPY NumSide.py /home/mehdi/Download/NumSide.py

CMD ["python3","/home/mehdi/Download/NumSide.py"]

下面,我得到的错误:

错误:不可满足的约束:py3-pip3(缺失):要求: world[py3-pip3] 命令'/bin/sh -c apk add python3 py3-pip3 && pip3 install --upgrade pip3 && pip3 install wget &&pip3 install sys &&pip3 安装线程 &&pip3 安装时间 &&pip3 安装请求 &&pip3 安装 paho.mqtt.client &&pip3 安装日志 &&rm -rf /var/cache/apk/*' 返回一个非零代码:1

【问题讨论】:

  • 包不存在。我相信应该是py3-pip
  • 以上评论为正确答案,请将其添加为 asnwer @stacksonstacks

标签: python docker pip alpine


【解决方案1】:

包名是py3-pip 不是 py3-pip3

【讨论】:

    【解决方案2】:

    如果您没有其他注意事项,请按照您的 Dockerfile,我建议您只需使用 python:3-alpine 基本映像。它基于alpine linux,以及你的,并且已经包含 Python 3 的东西:

    Dockerfile

    FROM python:3-alpine
    
    RUN python -m pip install --upgrade pip
    
    RUN pip3 install requests paho-mqtt
    
    COPY NumSide.py /home/mehdi/Download/NumSide.py
    
    CMD ["python","/home/mehdi/Download/NumSide.py"]
    

    否则考虑在安装前使用apk update 来更新包列表。

    【讨论】:

    • 你能在pip3 install wget sys threading time requests paho.mqtt.client logging找到多少错误的模块?
    • @phd 很多,真的甚至没有阅读列表,只是从原件复制粘贴。感谢您的通知!
    • 当我运行docker文件时,我得到了以下错误Step 2/5 : RUN pip3 install --upgrade pip3 ---> Running in 8ae8ba41c100 Collecting pip3 Could not find a version that satisfies the requirement pip3 (from versions: ) No matching distribution found for pip3 The command '/bin/sh -c pip3 install --upgrade pip3' returned a non-zero code: 1
    • 已编辑和检查 - 现在安装顺利。
    • @phd 我认为所有 python 库都应该由 docker 显式安装,这就是我在 docker 文件中添加所有模块的原因。我没有从“原始”复制和粘贴
    【解决方案3】:
    pip3 install wget
    

    您确定要 Python 的 wget,而不是系统 wget

    pip3 install sys &&\
    pip3 install threading &&\
    pip3 install time &&\
    pip3 install requests &&\
    pip3 install paho.mqtt.client &&\
    pip3 install logging &&\
    

    这些调用永远不会成功,因为 systhreadingtimelogging 是内置或标准模块,它们无法从 PyPI 安装。而且没有paho.mqtt.client这样的模块;也许你的意思是paho-mqtt

    至于错误 py3-pip3 (missing): required by: world[py3-pip3]: [py3-pip3] in requirements 意味着为软件包安装了额外的要求。似乎world 没有这样的额外功能;实际上它根本没有任何额外的东西。

    【讨论】:

    • 我认为我应该安装 docker 中使用的所有库。但是我意识到docker文件可以使用python的内置库。
    • 内置模块和标准库中的模块会自动随 Python 一起安装。即使它们不是(如果发行版将标准库分成几部分),您仍然无法使用pip 安装它们:pip install library from PyPI 并且这些模块不在 PyPI。
    猜你喜欢
    • 2017-05-09
    • 2016-11-11
    • 2021-02-25
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多