如何在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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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