Python版本兼容与环境冲突解决:Anaconda实战应用指南

笔者在之前的python学习中,对于python环境的配置一直基于非常浅层次的理解,仅仅是在网络上搜集罗列各种代码然后当cv工程师配置,于是对于python各种环境的配置原理不清楚。
这种环境配置对于解决课程问题绰绰有余,但是当笔者开始学习机器学习的时候,发现版本不兼容以及环境冲突的问题让人不胜其扰。所以花时间去学习之前所有不理解的名词、方法的原理,并总结如下。

python环境

python环境是指在一个特定的位置包含了Python解释器及其周围的工具、库和配置,他们共同构成了python程序执行的环境。
python运行环境提供了执行python代码所需的一切支持。
一般分为两种: 全局环境和虚拟环境

1.全局环境

  • 全局环境是指安装在操作系统上的python环境
  • 它是所有python程序的默认环境,除非特别指定使用其他环境
  • 修改全局环境会影响系统上所有使用这个python解释器的项目
  • 2.虚拟环境

  • 虚拟环境是一个独立的环境,可以有自己的python解释器和一组包
  • 它使得不同的项目可以有不同的依赖,不会相互干扰
  • 虚拟环境一般位于项目文件夹中,便于管理和迁移
  • python环境的组成

    pyhon解释器
    python运行环境的核心是解释器,一般分为python2和python3

    开发工具
    开发和调试的工具,包括集成开发环境(IDE)Pycharm,Visual Studio Code,Jupyter Notebook 等等

    包集合
    包括python解释器里自带的包和第三方包,第三方包我们一般使用包管理器pip来安装

    包管理
    安装,更新,卸载,管理第三方库的依赖,最广泛使用的是pip。

    问题出现

    全局环境出现的问题就是,在运行不同的python项目的时候,所需要的python解释器的版本可能不同,所用的第三方库的版本不兼容,pip安装的大量第三方库文件紊乱繁杂,造成环境冲突,import外部包的时候各种报错。
    常见报错信息如下:“ImportError”

    ImportError: numpy.core.multiarray failed to import
    

    解决方法

    对于每一个特定要求的项目创建一个虚拟环境。

    推荐使用anaconda工具来创建

    Anaconda
    Anaconda是一个可以对虚拟环境进行统一管理的python发行版工具。

    优势

    1. 预装了很多常用的科学计算和数据分析库,例如Numpy,Pandas,Scipy,Matplotlib等等,常用于数据分析和机器学习领域。(无需再用pip进行安装)
    2. 集成了Jupyter和Spider等集成开发环境,使用方便。
    3. 最重要的是,有一个叫conda的包管理器,同时也是一个环境管理器。一般可以通过Anaconda prompt(在windows系统中,在mac和linux系统中是终端)。

    pip和conda的区别

    1. conda能够更方便的进行环境管理,能轻松的在不同环境中切换
    2. pip对于python包的版本更新、回退、卸载等等将影响系统python,影响所有使用系统python环境的python程序。
      conda在不同路径更改包,不会影响系统自带包。
    3. pip不会进行依赖项检查,安装包的时候可能会直接忽略依赖项安装,仅在结果中提示错误。
      conda会列出所需其他依赖包,安装包时候自动安装其依赖项,可以在包的不同版本中自由的切换。
      4.conda不仅仅适用于python语言。

    总而言之,conda结合了pip和virtualenv的功能,可以更便捷地管理包和虚拟环境。

    conda的基本操作

    一般不建议使用图形化操作界面,因为比较卡。命令行式操作界面会比较丝滑(也比较能装逼(狗头

    在windows操作系统下,使用Anaconda Prompt即可进入conda命令行操作界面
    进入conda操作界面

    1.虚拟环境的管理

    ① 创建虚拟环境
    可以指定python版本和要安装的包

    conda create -n env_name python=version package_names
    

    ②查看虚拟环境列表

    conda env list
    

    查看虚拟环境列表③激活虚拟环境

    conda activate env_name
    

    可以看到前面的括号内改成了我的env_name,说明该环境已经激活成功

    ④ 修改环境名称
    conda没办法直接修改,但是可以通过复制原环境到新环境再删除原环境来"曲线救国"。

    经笔者之后学习发现,可以直接用代码更改

    conda rename -n 旧 新
    

    先激活旧环境,在旧环境中创建新环境

    创建新环境

    复制原环境到新环境

    conda activate new_name
    conda env export > environment.yml
    conda env update --file environment.yml
    

    删除原始环境

    conda remove -n old_name --all
    

    再次检查env list

    重命名成功

    ⑤退出当前虚拟环境

    conda deactivate
    

    ⑥删除虚拟环境

     conda remove -n env_name --all 
    

    2.包管理

    给特定虚拟环境安装依赖包,首先要先激活该虚拟环境
    ①安装包

    conda install package_name
    

    可以在后面加上==指定包的版本

    ②列出所有包

    conda list
    

    ③更新包

    conda update package_name
    

    一次性更新所有包

    conda update --all
    

    ④删除包

    conda remove package_name
    

    ⑤查找包

    conda search keyword
    

    作者:Edith Cai

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python版本兼容与环境冲突解决:Anaconda实战应用指南

    发表回复