当前位置: 首页 > 知识库问答 >
问题:

如何使用复制到docker容器的python虚拟环境

韩刚洁
2023-03-14
RUN source venv/bin/activate

在我的Dockerfile中(当然是在将其复制到容器中之后)可以解决我的问题,但是对这个答案的注释显示它没有。之后,我看到了这篇文章,它展示了如何在docker容器中设置一个新的venv,但没有回答我的问题。许多其他的答案让我无休止的疯狂追逐,所以我决定在这里问。希望一个好的答案能解决我的问题,并为那些将来在docker容器中定制python包面临这个问题的人服务。

我的问题:
如何使用复制到docker容器中的venv?

共有1个答案

那博瀚
2023-03-14

通常情况下,您不能在任何地方复制虚拟环境,不管是Docker还是其他地方。它们往往被绑定到一个非常特定的文件系统路径和一个非常特定的Python安装。如果您知道您有完全相同的Python二进制文件,并将其复制到完全相同的文件系统路径,那么您可能可以按原样复制它,但构建系统将非常脆弱。

在Docker中通常也不需要虚拟环境。Docker映像提供了与在非Docker上下文中使用虚拟环境进行的相同类型的独立Python安装。如果您通常通过运行

python3 -m venv vpy
. vpy/bin/activate
pip install -r requirements.txt

那么您就可以使用Dockerfile获得一个等效的安装

FROM python:3
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY local.patch /app/
RUN cd $(python3 -c 'import sysconfig; print(sysconfig.get_path("platlib"))') \
 && patch -p0 < /app/local.patch
 类似资料:
  • 我主要用python编程,并且有一些虚拟环境方面的经验。我是新的软件,并开始寻找docker来运行我的代码。我想了解它的功能和工作原理。 据我所知,docker容器就像虚拟环境,在执行时运行一组指令,可以将其中包含的所有内容视为一个实体(因此它或其他内容不会相互制约?)。当我读到更多关于容器的内容时,它们听起来非常完美,可以消除对虚拟环境的任何需求,但仍然不确定。如果能澄清一下,我将不胜感激,因为

  • 本文向大家介绍Python使用Anaconda制作虚拟环境,包括了Python使用Anaconda制作虚拟环境的使用技巧和注意事项,需要的朋友参考一下 示例 virtualenvAnaconda的强大替代品-跨平台的pip类软件包管理器,捆绑了可快速创建和删除虚拟环境的功能。安装Anaconda之后,以下是一些入门指南: 创建环境 在<envname>您的虚拟环境中使用任意名称,并且<versio

  • python 的虚拟环境可以为一个 python 项目提供独立的解释环境、依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本带来的冲突,而且还能方便项目的发布。 virtualenv virtualenv可用于创建独立的 Python 环境,它会创建一个包含项目所必须要的执行文件。 安装 virtualenv $ pip install virtualenv 配置 pip 安装第

  • 问题内容: 这个问题已经在这里有了答案 : 是否可以正常升级现有的virtualenv? (5个答案) 去年关闭。 我遇到了麻烦,因为我有一个现有的django项目应用程序,目前正在虚拟环境下工作。但是,该环境的python版本是2.7。我需要以某种方式将其切换到python3.4。我意识到有可能仅创建一个新环境,但是我不知道如何使用现有的django文件和新的python版本创建一个新的环境。有

  • 我有一个,其中我将现有目录(包含内容)复制到工作正常的容器: Dockerfile 但当我使用文件中只有目录,而在中没有任何内容。 docker-compose.yml: 也许我不明白的功能,如果是这种情况,请告诉我如何通过文件将现有文件复制到容器。

  • 我在一个物理服务器中有一个VM主机,里面有许多docker容器。 这是我fig.yml的一部分 我希望设置pg容器只使用主机cpu的25%,应用程序只使用主机cpu的50%,以此类推。 我可以用或手动管理链接吗? 在我的例子中,当这个容器中的一个正在运行一个昂贵的任务时,它会影响其他容器的cpu性能。但是,当在同一台物理服务器中,我有其他具有类似部署的VM时,问题会急剧增加。