在D中安装和使用pip和virtualenv

2024-05-20 01:52:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把Python,Pip和virtualenv安装在一个Docker容器中,这个容器就是Ubuntu,我通过Dockerfile创建镜像:

FROM ubuntu:16.04

RUN apt-get update -y

RUN apt-get

RUN apt-get python3 -y

RUN apt-get install python3-pip -y

RUN pip install virtualenv
...

当它出现在这里时,它出现了“/bin/sh:1:pip:no t found”,但是在安装过程中没有显示任何异常,这是否意味着我没有正确安装pip?或者在使用pip order之前,我应该做其他事情吗?

然后我像这样更改了Dockerfile:

...
RUN apt-get python3 -y

RUN apt-get install python3-pip -y

RUN apt-get install python3-virtualenv -y 

RUN virtualenv --no-stie-packages -p /path/python3 py3env
...

但它仍然显示/bin/sh:1:virtualenv:not found,here is it

我还安装了git,git克隆顺序运行正确,可以使用。我错在哪里,或者我该怎么做?


Tags: installpipnorungitdockerfilegetbin
2条回答

在容器中使用虚拟环境有什么意义?Virtualenv对本地开发非常有帮助,它允许您在一台机器上使用不同版本的python解释器和包。但是在docker容器中应该只有一个进程(实际上容器就是进程),并且可以全局安装所有需求。

但如果您真的有很强的理由这样做,那么您可能必须使用“python3方法”来创建虚拟env。

所以你的档案应该是这样的:

FROM ubuntu:16.04
RUN apt-get update -y \
    && apt install python3 -y \
    && apt install python3-pip -y \
    && apt install python3-venv -y \
    && python3 -m venv venv
ENTRYPOINT bin/bash

你可以用命令建立它

docker build -t ubuntu-python .

一起跑

docker run --rm -it ubuntu-python

在容器外壳中,可以使用命令激活venv

source venv/bin/activate

然后运行python解释器并检查它是否从venv运行:

>>> import sys
>>> sys.executable

它应该打印/venv/bin/python

我不知道如何使用预先激活的虚拟环境来运行容器(我不知道这个词是否真的存在),我仍然认为您实际上不需要在容器中使用虚拟环境。

另外,你最好试着为docker准备python-images,例如,轻阿尔卑斯图像,而不是扩展基本的ubuntu图像。

请原谅我糟糕的俄语英语,我希望你能理解我的回答:)

在基于Debian的平台上,包括Ubuntu,the command installed by ^{} is called ^{},以便它与任何系统安装的Python 2及其pip和平共存。

类似地,virtualenv命令不是由包python3-virtualenv安装的;要获得这个命令,you need ^{}.

注意venv包含在Python 3标准库中,所以您根本不需要安装任何东西。

python3 -m venv newenv

不过,你为什么要在Docker里面装一个virtualenv呢?(有的情况是有意义的,但是在绝大多数情况下,您希望Docker容器尽可能简单,也就是说,将所有内容都作为根安装,如果需要更新,则重建整个容器。)

另外,您通常希望最小化RUN语句的数量。在调试时生成许多层也许是可以防御的,但是不做任何事情的层绝对是浪费。或许还会发现apt-get一次可以安装多个包。

RUN apt-get update -y && \
    apt-get install -y python3 python3-pip && \
    ...

只要其中一个命令失败,&&就会导致整个RUN序列失败。

相关问题 更多 >