Python容器外部挂载虚拟环境以及项目探讨

作者:不染心
博客:https://blog.csdn.net/qq_38234785

感兴趣的大家一起学习鸭!冲鸭!😄

目的

本地开发了一个python项目,可能需要依赖复杂的库,那么如何移植、部署到容器(集群)中。

设想

1、本机上导出一个requirements.txt,然后批量在容器中安装依赖(每次都要做,费时、费力);

2、对于设想1中安装的依赖后,将整个容器保存为镜像(违背了使用过容器的初衷,可能导致镜像越来越繁杂);

3、使用虚拟环境,将项目和环境挂载到外部(√);

坑(很多坑)

宿主机上建立的虚拟环境,容器内不能使用

容器内建立的虚拟环境,宿主机上不能使用

原因:一旦建立了虚拟环境,其中的python、pip路径就固定了(不信可以试试)

一、挂载目录

宿主机:

/home/dyl/spark_compose/python_venv/
	test.py

容器内:

/code/

将本地环境需要的包信息导出到文件中

pip freeze --all > requirements.txt 

二、容器内搭建一个虚拟环境

(1)运行镜像并挂载

 docker run -it -v /home/dyl/spark_compose/python_venv/:/code/ ubuntu:spark

进入容器即可看到挂载目录内容

root@d6c94bf712dd:/code# ls
test.py

接下来在容器内操作

(2)安装

pip install virtualenv

(3)创建运行环境

virtualenv [虚拟环境名称] 
virtualenv venv

virtualenv  -p python3.7 spark_env

(4)激活环境

激活环境不是必须 的,激活只是将虚拟环境的二进制目录添加到搜索路径中,这样 “python” 命令将调用虚拟环境的 Python 解释器,可以运行其中已安装的脚本,而不必输入其完整路径。但是,安装在虚拟环境中的所有脚本都应在不激活的情况下可运行,并自动与虚拟环境的 Python 一起运行。

linux:

$ cd venv
$ source ./bin/activate

Windows 10:

> cd venv
> .\Scripts\activate.bat

(5)退出环境

linux:

$ deactivate

Windows 10:

> .\Scripts\deactivate.bat

(6)删除环境

没有使用virtualenvwrapper前,可以直接删除spark_env文件夹来删除环境

三、使用

1、激活之后,使用pip list查看虚拟环境中的库;

2、pip install -r requirements.txt 在线安装依赖包

3、运行挂载文件夹中的项目python test.py

4、删除容器后,虚拟环境依旧保存在挂载文件夹中,启动容器可以使用;

结语

上述操作,可以将环境项目保存在外部,将容器只作为一个平台,不对容器进行修改保存

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不染心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值