• Python 虚拟环境迁移


    在工作中会使用python制作一些工具,但是python不同版本的兼容性较差,然而有时不得更换电脑,使原python脚本运行时经常会发生一些问题,因此想制作一个可以迁移的python虚拟环境。
    但是,直接将虚拟环境迁移到另一台电脑,甚至在同一台电脑上移动虚拟环境位置,运行python都会发生问题。常规的解决方案[1]是生成requirements.txt后在另一台电脑上安装,如下。

    • activate需要打包的虚拟环境,在对应目录下创建一个文件夹whl,并新建requirements.txt文件,进入whl文件夹
    pip freeze --all > requirements.txt
    
    • 1
    • 这样需要安装的依赖库就总结在requirements里面,将符合条件的库进行打包
    pip download -r requirements.txt
    
    • 1
    • 需要安装的文件就全部在whl文件夹里面了。在目标机器上新建一个虚拟环境,考虑另外一台机器是否接网的问题,有两种策略。
    • 有网的话,直接拷贝requirements.txt进行在线安装
    pip install -r requirements.txt
    
    • 1
    • 没网时将whl文件夹全部拷到虚拟环境下进行安装
    pip install --no-index --find-links=. -r requirements.txt
    
    • 1

    此种方案并不能实现我想要的迁移后直接使用的功能,因此实践出来了可以在本机任意移动虚拟环境,并可以迁移到和原电脑相同系统的电脑后直接activate使用的方案。
    注意:

    • 本方案目前只针对Ubuntu系统,尚未对Windows系统进行实践;
    • 电脑间迁移,电脑的系统必须相同,不同版本的Ubuntu系统间迁移尚在实践中。

    1. venv工具安装

    sudo apt-get install python3-venv
    
    • 1

    2. 创建python虚拟环境

    mkdir venv-python
    python3 -m venv venv-python
    
    • 1
    • 2

    3. 自动获取虚拟环境迁移位置

    venv-python/bin/activate脚本中,变量VIRTUAL_ENV为初始安装的python虚拟环境位置,即VIRTUAL_ENV="venv-python"。在迁移python虚拟环境后需要自动获取文件位置,修改脚本。

    workdir=$( dirname $( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) )
    VIRTUAL_ENV="${workdir}"
    export VIRTUAL_ENV
    
    • 1
    • 2
    • 3

    4. 修改脚本默认解释器

    venv-python/bin/中的脚本文件中,设置的使用的python3解释器是虚拟环境安装时的python3文件路径,需要修改路径为迁移后的位置。

    filesdir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
    python_interpreter="#!${filesdir}/python3"
    
    for file in `ls ${filesdir}`
    do
        if [ ${file:0:6} = "python" ];
        then
            :
        elif [ ${file:0:8} = "activate" ];
        then
            :
        else
            :
            read_file="${filesdir}/${file}"
            sed -i "1c ${python_interpreter}" ${read_file}
        fi
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5. 修改python连接

    venv-python/bin/python3软连接到/usr/bin/python3,而/usr/bin/python3软连接到/usr/bin/python3.6。为了迁移后使用虚拟环境中的python,需要拷贝python库文件和修改软连接。

    sudo cp /usr/bin/python3.6 venv-python/bin/
    ln -snf python3.6 python3
    
    • 1
    • 2

    通过上述操作就可以将python虚拟环境迁移到本机其他位置或者其他相同系统的机器上直接使用了。

    参考文章:[1] https://blog.csdn.net/sinat_32330093/article/details/95447823

  • 相关阅读:
    视觉信息处理与FPGA实现第八次作业——verilog实现亮度调节
    基于凸松弛算法的电力市场策略研究(Matlab代码实现)
    【JVM笔记】Serial回收器:串行回收
    jquery使用jsonp进行跨域调用
    Java实现Unicode与普通字符的转换
    常见的Java上机面试题
    企业架构LNMP学习笔记48
    微信小程序-页面导航-导航传参
    在Scrum敏捷开发中,开发人员(Developers)的职责
    华为设备配置CPU防攻击命令
  • 原文地址:https://blog.csdn.net/mpt0816/article/details/127461230