虚拟环境(Virtualenv|Anaconda)
场景一
假设我们有两个Python工程,均使用python2.7.9的版本解释器。第一个工程的工作是图像识别,安装了一堆opencv等第三方包工具包;第二个工程是数据爬虫,安装了一堆如bs4、xpath等第三方解析包。
我们当然可以将所有的第三方包都安装在同一个python解释器的资源库中,但是随着项目的增加,每个项目可能只是用到其中的很小一部分第三方包,这样就会导致比如我们就开发了一个 1+1=2 计算代码,都需要用上面包含造火箭功能的解释器,臃肿且不优雅。
这个时候我们考虑是否可以将每一个工程分别创建一个独立管理的Python解释器。每个工程对应的解释器只包含当前工程内使用的资源包。
virtualenv
针对上面的场景,我们可以使用vitrualenv。
但是有一个问题,使用vitrualenv创建的Python解释器,实际上是从当前宿主机现有的Python环境中复制过来的干净的Python解释器。
简单的说就是:只有你有一个Python环境,virtualenv才能帮忙拷贝一个新的出来,如果你宿主机上没有安装过Python解释器,那么它也没办法。
-
基础命令
virtualenv new_env_path
-
指定Python版本
virtualenv -p new_env_path python=3.8.8
(python3.8.8是我当前环境的版本,如果写3.8.7就会报错)
Kenny@MAC % python --version Python 3.8.8 Kenny@MAC % virtualenv py388 --python=3.8.7 RuntimeError: failed to find interpreter for Builtin discover of python_spec='3.8.7' Kenny@MAC % virtualenv py388 --python=3.8.9 RuntimeError: failed to find interpreter for Builtin discover of python_spec='3.8.9' Kenny@MAC % virtualenv py388 --python=3.8.8 created virtual environment CPython3.8.8.final.0-64 in 395ms creator CPython3Posix(dest=/Users/kt/Downloads/py388, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/kt/Library/Application Support/virtualenv) added seed packages: pip==22.0.3, setuptools==60.6.0, wheel==0.37.1 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
-
激活
当虚拟环境生成后,我们需要使用当前新的虚拟环境时,需要首先激活它,否则我们将不会使用新环境的解释器# Enter Venv Path. cd [new_env_path] # windows acitvate # linux/MACOS source activate
-
退出环境
# Enter Venv Path. cd [new_env_path] # windows deactivate # linux/MACOS source deactivate
场景二
还是上面的情况,但是我们现在本地宿主机没有安装任何Python解释器,但是我想实现场景一的管理方式,并指定多个版本号的Python解释器,如何做呢?
Anaconda
Anaconda是一个Python的包管理工具软件,想使用它当然是得下载并安装,基本上anaconda的下载和安装都是next step、next step、done.
关于Anaconda新环境的创建和使用简单的有以下几部分:
- 创建一个新环境
conda create -n new_env_name python=3.8.8 conda create -n new_env_name2 python=2.7.9
- 激活环境
# windows acitvate new_env_name # linux/MACOS source activate new_env_name # 此时你可以安装包、启动环境工程,它都将使用当前激活的解释器
- 退出环境
# windows deactivate # linux/MACOS source deactivate