为什么需要使用虚拟环境

但你有多个项目,他们同时依赖一个包,但是依赖的版本不同的时候,就可以用到虚拟环境,可以可以解决包版本冲突的问题,类似于conda。

venv

Python用于创建和管理虚拟环境的模块称为 venv.venv通常会安装你可用的最新版本的Python。如果系统上已经有多个版本的Python,可以通过运行python3或你想要的任何版本来选择特定的 Python 版本。当你需要指定具体版本时,你可能需要使用另一个包来帮助你指定你需要的版本,那就是virtualenv,这个后面再说。

创建虚拟环境

在这里插入图片描述

在终端运行:

python -m venv test-env
# 当同时有python2和3时
python3 -m venv test-env

当你运行此命令的路径上不存在 test-env目录时,则会创建目录,并在其中创建包含 Python 解释器、标准库和各种支持文件的副本的目录。

注意:上面的创建虚拟环境的命令,python对应的版本即是虚拟环境创建的版本。

进入虚拟环境

Windows:

test-env\Scripts\activate.bat

Linux:

source test-env/bin/activate

进入之后会在命令行前面带(test-env)

查看已经安装好的包

pip list

在这里插入图片描述
只有两个最基础的包用于安装其他包,pip版本有点低,需要手动升级

python -m pip install --upgrade pip

使用 pip 管理包

现在可以使用pip安装项目需要的其他包

要退出环境只需要:

deactivate

virtualenv

前面提到如果需要指定版本的Python,而本地还没有对应版本的时候,则需要使用virtualenv

安装:

pip install virtualenv

创建环境:

virtualenv test-env2

这个命令会找到一个python解释器来创建这个虚拟环境,默认情况下,与virtualenv运行的python相同,但是我们可以通过-p或者--python参数更改它。

创建将虚拟环境标记为被版本控制系统(目前只支持Git)忽略的文件。打开test-env2文件夹,可以看到了创建了一个.gitignore文件。

指定使用的python

Windows:

virtualenv -p C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe test-env3

Linux:

virtualenv -p /usr/bin/python test-env3

虽然这两种方法都可以很方便的创建虚拟环境,但是前提是对应的版本必须在本地已经安装过了,而且一旦本地的版本升级,对应依赖的虚拟环境可能会出现不可用的情况。而且创建的环境散落在各个项目的文件夹中,不便于统一管理。

pyenv据说可以解决上面提到的不足

pyenv

pyenv
就到这里吧,这个pyenv大概看了下就不继续了解了。


总的来说,conda虽然会占用大量的磁盘空间,但是换来的是更加直接好的的体验,而venv或virtualenv则更加节省空间,也会让项目的环境更加干净。各有各的优缺点吧。

写这篇博客,是应为在某乎上看到对于虚拟环境和conda的一些争论,有的人力推conda,有的人全盘否定conda,主张Python官方的是最NB的。因为平时虚拟环境用的少,于是乎自己了解一波,听别人der der der,不如自己试一试。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐