如何在Python中创建和使用虚拟环境

云计算 虚拟化
Python中的虚拟环境是一个很有用的功能,可以建立多个互不干扰的空间,每个空间中安装的包都是相互独立的。

[[431838]]

前两天收到公司邮件,说在我的电脑上发现了anaconda的进程,商业软件需要付费,为了软件合规,让我卸载掉。我就借这个机会写个简单的教程。

Anaconda是一个Python的发行版 ,主要集中在科学计算的用途上,主要有三点优势:

  • 打包了很多科学计算的常用库,比如numpy
  • 开发了conda这个环境管理工具,可以很方便地创建虚拟环境,管理多个Python版本,同时安装conda维护的库
  • 维护了很多科学计算相关的库,而且都是编译好的二进制库,相比于pip的库,有时候更加方便,比如conda会帮你把很多c语言的库编译好直接装,很省事

我上网搜了一下,Anaconda确实变更了他们的授权政策,之前个人版可以用作商业用途,现在不行了。大规模商业公司的用户必须得缴费,小规模的商业用途仍然可以使用个人版(200人以下)。

我估摸着这个公司其实查的也没有那么严,属于睁一只眼闭一只眼,甚至是睁一只眼闭九只眼的状态,但是公司为了完全合规还是让我们卸载掉了这个软件。

(话说为什么不能出钱给我们买?)

其实Anaconda倒不是因为软件收费,他收费的主要对象是conda包的在线服务,也就是你从他们的服务器上下载库的话收费,单单使用conda这个软件并不收费。

然而,我用conda的场景偏偏就需要从他们的服务器上下载包,因为我主要就是管理多个python版本,这个是需要下载二进制文件的。

所以,虽然但是,我还是在不舍中卸载了,然后开始寻找替代方案。

结论是:

  • 如果只需要使用一个版本的Python,但是需要多个虚拟环境,用venv
  • 如果需要用到多个版本的Python和虚拟环境,并且可以方便来回切换,用pyenv

Python中的虚拟环境是一个很有用的功能,可以建立多个互不干扰的空间,每个空间中安装的包都是相互独立的。之所以有这个需求,是因为不同的软件依赖的包的版本是不一样的。

比如,你有一套源代码依赖TensorFlow 1.0和python3.5,然后你又下载了别人的源代码,依赖TensorFlow 2.0和python3.6,如果没有虚拟环境就很麻烦,因为Python不能安装不同版本的库到同一个环境中。但是你可以创建两个不同的Python环境,这个时候就能完美运行两套代码,互不干涉了。

下面稍微写一下conda pyenv venv的基本使用教程。

conda

用conda创建虚拟环境的命令如下

conda create -n new_env python=3.8 numpy

其中-n new_env的意思是指定新环境的名字,这里叫new_env,python=3.8是指定python的版本,numpy是指创建环境的时候你想安装的包,可以写不止一个,也可以不写,等到创建完成了再安装。

创建完成之后,你可以通过conda activate来激活某个环境

conda activate new_env

conda的环境默认都是安装在anaconda的根目录下面,比如我的anaconda安装在/home/user/anaconda下,那么刚刚的环境就在home/user/anaconda/envs/new_env中

conda的优势在于,可以选择python版本,而且不管是不同版本的Python解释器,还是对应的包,他提供都是编译好的二进制文件,下载下来就可以直接用,不用自己编译。用pyenv也能管理多个版本,但是需要自己编译,虽然自己编译更自由,但是也需要更多技巧。

conda的缺点是,依赖计算很慢,所以安装会更久,而且网络对国内用户不太友好。

venv

venv的用法很简单

python3 -m venv my-env

这样就创建完成了一个新虚拟环境,叫my-env,跟conda不同的是,这个my-env是放在你运行这条命令的目录下面。

创建完成之后,还需要激活,运行下面的命令激活

source my-env/bin/activate

venv的局限性在于,只能用当前的Python版本

pyenv

pyenv可以用来管理多个python环境,用起来比conda稍微复杂一点点。

麻烦在哪呢?它需要下载Python的源代码自己编译,而conda都是下载好的二进制,可以直接用。我用pyenv安装python3.6的时候就遇到了编译错误,然后设置了build flag才解决。

安装某个版本:pyenv install 3.6.15

设置默认版本:pyenv global 3.6.15

装完之后就能再配合venv创建虚拟环境了。

pyenv其实自带了一个virtualenv命令,类似于conda,可以在创建虚拟环境的时候指定版本,比如

pyenv virtualenv 3.6.15 new_env

但是需要你先安装对应版本的python。

 

以上基本上就涵盖了Python创建和使用虚拟环境的几种方法。

 

责任编辑:武晓燕 来源: HexUp
相关推荐

2021-09-18 08:00:00

Python系统开发

2023-06-01 15:37:11

PyCharm工具开发

2021-11-15 05:44:16

Python虚拟环境开发

2019-07-11 16:20:22

MacOSPython

2021-03-04 20:46:32

virtualenvwPython虚拟环境

2020-07-06 07:00:21

PyCharm虚拟环境

2012-11-30 16:02:57

在vSphereiSCSI存储虚拟化

2021-03-01 08:00:00

Linux开发虚拟环境

2016-04-12 10:12:53

2021-02-18 17:00:52

Linux归档文件

2019-09-16 11:40:49

Linux交换文件

2021-07-30 20:25:04

pipxPython编程语言

2023-05-05 16:37:13

CPU 性能虚拟环境虚拟化

2019-07-02 06:31:27

Python虚拟环境代码

2022-09-08 10:40:16

Linux Mint工作区程序

2018-04-26 09:30:54

LinuxLVM交换分区

2017-01-06 09:57:08

AppSenseLANDesk桌面

2013-08-16 11:17:35

虚拟桌面虚拟快照

2021-08-13 08:42:48

Python 编程技巧poetry

2009-02-02 15:07:54

服务器虚拟化VMware
点赞
收藏

51CTO技术栈公众号