python 虚拟环境迁移--解决docker部署python环境问题与错误总结

首先我使用的是老版的创建虚拟环境

首先安装虚拟环境,命令如下:

sudo pip3 install virtualenv #安装虚拟环境
接下来还要安装虚拟环境扩展包,命令如下:

sudo pip3 install virtualenvwrapper
安装虚拟环境包装器的目的是使用更加简单的命令来管理虚拟环境。

修改用户家目录下的配置文件.bashrc,添加如下内容:

export WORKON_HOME=$HOME/.virtualenvs  # 配置虚拟环境的保存位置 $HOME是用户的主目录 也就是 cd ~  这个文件夹
source /usr/local/bin/virtualenvwrapper.sh  #  配置virtualenvwrapper命令的脚本
使用source .bashrc命令使配置文件生效。
  • 执行上面文件的时候 很可能报错
在docker中安装 虚拟环境时执行
source /usr/local/bin/virtualenvwrapper.sh

报错:
/usr/local/bin/virtualenvwrapper.sh: line 230: : command not found
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON= and that PATH is
set properly.
  • 原因 : 因为在virtualenvwrapper.sh中有如下代码

# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"

# 脚本会默认使用python2环境,但是virtualenvwrapper装在了python3环境中,所以会有上面的报错
  • 解决方法: 直接 搜索本地 python3的文件路径
root@huangdonglin-virtual-machine:/usr/local/bin# find / -name python3
/root/.virtualenvs/django_py3_1.11/bin/python3
/etc/python3
/usr/lib/python3
/usr/bin/python3
/usr/share/python3
/usr/share/doc/python3
/usr/share/lintian/overrides/python3
root@huangdonglin-virtual-machine:/usr/local/bin#

直接将VIRTUALENVWRAPPER_PYTHON默认值修改为/usr/bin/python3即可,然后再次执行命令就不会报错了

接着再docker中 同样的方法安装虚拟环境

  • 我们在 本地虚拟环境中直接跑起来程序之后,可将整个环境全部 拉到 docker中去,防止错误。请看:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 前辈的解答:
    在这里插入图片描述

接着开始进行 dockerfile编写

  • 主要思路就是 将我们的 虚拟环境整个包,一直到 对应的docker 目录下
    在这里插入图片描述
    我们将这个环境包,整个移动到 docker同虚拟环境目录下,
    但是会发现 pip 和 虚拟环境的python 都不能使用,不用担心,需要更改一下
    在这里插入图片描述
    在这里插入图片描述
    改动这两个位置对应的路径正确即可!
    这两个文件分别是 pip 和 activate
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值