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

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

作者: HexUp 2021-10-28 19:08:29

云计算

虚拟化 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创建和使用虚拟环境的几种方法。

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/230247.html<

(0)
管理的头像管理
上一篇2025-04-19 03:41
下一篇 2025-04-19 03:42

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注