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입니다
    .

추천

출처blog.csdn.net/pythonstrat/article/details/108649715