Python虚拟环境教程:使用Virtualenv和Poetry
因为觉得有参考价值,一直打开许多页面没有关闭,浏览器的 tab 都差不多上百了,决心把一些有意义的内容通过翻译、摘录和重编的形式把核心内容快速统一到博客上来,方便后续检索,也好关掉一些浏览器窗口。
本文是Python Virtual Environments tutorial using Virtualenv and Poetry的翻译、摘录和重编,原作者Dmitriy Zub,我去掉了IDE的部分,加入了一些其它内容,让它更加顺畅内聚。
简介
首先这是篇向大家介绍虚拟环境和virtualenv
和poetry
小教程,专注在这三个方面:
- 什么是Python虚拟环境
- 为什么要用它
- 怎么用它
什么是虚拟环境
简而言之,就是一个用来隔离东西的东西。可以简单把它理解为把一些安装的包独立放在某一个文件夹的机制,Python可以在某一个固有的独立文件夹里查找和加载安装的包,这样就实现了一台电脑里多个隔离的Python。
然后它是可以防止冲突,比如不同的项目可能有相同的名字的包,如果安装在一起,必然产生冲突。
为什么要用虚拟环境
首先是避免Python版本冲突,有时候你安装完新版本的Python后还需要使用旧版本的Python,也有可能需要使用多个版本的Python,这可能使你不得不把它们分别安装在不同的目录,然后在使用的时候,小心翼翼地选择你想要的Python版本,就像下图这样。
虚拟环境可以让你在同一个系统中实现多个版本共享,使用起来还是像只有一个Python版本一样是不是方便了许多。
其次就是避免包版本的冲突,比如你有两个项目,一个依赖Django 2.2
,一个依赖Django 4.0
,如果没有虚拟环境,只能存在一个版本,它们import
的时候必然有一个启动不了。
有虚拟环境的话,就很简单,各自的环境是独立的,你用的你的2.2,我用我的4.0,各自安好。
如何使用虚拟环境
下面举例说明如何使用虚拟环境,
首先是安装virtualenv
,
$ pip install virtualenv
然后在项目目录 package/project
创建环境文件夹,
$ virtualenv env
这里的env
就是创建的虚拟环境了,里面会独立安装这个虚拟环境的程序包。接下来激活它,
$ source env/bin/activate
(env) $
你可以看到系统的提示符前缀变成了(env)
,表示你正处于这个虚拟环境之中。这时候安装程序包就会安装到env
目录中去,
(env) $ pip install google-search-results
要退出当前虚拟目录很简单,只要执行,
(env) $ deactivate
$
可以看到系统的提示符前缀恢复了。
使用 Poetry
首先是安装它,
$ pip install poetry
安装以后,在package/project
目录中执行,
$ poetry init
它会交互式地问你一些项目名、描述、作者、兼容的版本和依赖的程序包之类的问题,最后会在目录下生成一个pyproject.toml
文件,它就是用来管理项目和依赖的载体,看起来大概如下:
# pyproject.toml file[tool.poetry]
name = "virtual environments"
version = "0.1.0"
description = ""
authors = ["Dimitry Zub <dimitryzub@gmail.com>"][tool.poetry.dependencies]
python = "^3.9"
google-search-results = "^2.4.0"
# other site-packages will appear here..[tool.poetry.dev-dependencies]
# development dependencies will appear here..[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
简单来说,它就是新的统一的Python项目配置文件,它包含构建系统的需求和信息,pip
可以用它来构建系统,它几乎就是setup.py
替代器。
往package/project
中加入新的依赖,可以使用poetry add
命令,
$ poetry add google-search-results
这时候poetry
会为项目创建一个虚拟环境,并安装指定包,把包名、版本等信息写入pyproject.toml
和poetry.lock
,其中后者可以锁定依赖包的版本。
如果项目已经创建了poetry.lock
和pyproject.toml
,那可以用下面的命令来安装依赖包:
$ poetry install
install
指令会读取pyproject.toml
或poetry.lock
,并安装里面列出的依赖,对poetry.lock
的处理方式是这样的:如果有这个文件,就安装里面指定的版本的包,如果没有,那就从pyproject.toml
中计算依赖,并安装满足条件的最新版本的包。额外的,如果不想安装开发版本依赖,需要加上--no-dev
参数:
$ poetry install --no-dev
结论
不同项目,不同环境。简单来说,就是对不同的项目要做好隔离,实现各项目使用不同的库版本,甚至不同的Python版本。
全局安装必然引发混乱,想像一下如何在全局安装多个不同版本的包,又如何让多个版本的Python共存,就让人头大了,千万不要这么干。
Python虚拟环境教程:使用Virtualenv和Poetry相关推荐
- 基于Windows下Anaconda创建python虚拟环境教程
基于Windows下Anaconda创建python虚拟环境教程 Anaconda是目前最流行的数据科学平台以及现代机器学习的基础.同时Anaconda 也是一个Python的发行版,专注于人工智能, ...
- python虚拟环境venv、virtualenv
目录 原理 创建.删除虚拟环境 激活.退出.初始化虚拟环境 导出.导入虚拟环境 pycharm+虚拟环境 部署虚拟环境 pycharm目录下idea作用 pycharm目录下venv文件内容含义 原理 ...
- Linux、Mac、windows 系统下 配置Python虚拟环境 virtualenvwrapper教程,workon切换环境, 非常简单方便
前言 开发及测试过程中每个环境都有各自的作用,避免破坏其他环境所以建议每个项目新建一个虚拟环境,经过对比最终我选择了virtualenvwrapper来作为我开发中虚拟环境管理工具,接下来一起来看一下 ...
- Python虚拟环境pyenv、venv(pyvenv)、virtualenv之间的区别,终于搞清楚了!
背景 问题1: 举个例子,tensorflow(tf)是一个十分流行的python机器学习库,你现在手里有两个tf项目,其中项目A需要使用python2.7 + f1.2,项目B需要使用python2 ...
- Python虚拟环境 之 virtualenv安装、创建、激活、关闭
目录 Python虚拟环境 1.virtualenv 2.安装Virtualenv 3.创建virtualenv 4.激活virtualenv 5.关闭virtualenv 6.venv Python ...
- 安装 python 虚拟环境 > pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple/报错解决办法
安装 python 虚拟环境 > pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple/报错解决办法 [root@ ...
- windows的python切换环境_Windows下的python虚拟环境设置
Windows下的python虚拟环境设置: virtualenv 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲 ...
- 基于远程服务器安装配置Anaconda环境及创建python虚拟环境详细方案
基于远程服务器安装配置Anaconda环境及创建python虚拟环境详细方案 一.打开连接好自己的远程服务器(博主用的是MobaXterm软件,比较方便). 二.查看选取Anaconda版本,点击下面 ...
- 终极版Python学习教程:一篇文章讲清楚Python虚拟环境
我在之前写过一篇Python学习教程,说过新手往往没有注意环境隔离,导致Python项目包与包之间冲突. 并且Python2与3代码执行有问题等等.鉴于此我决定今天的Python学习教程给大家聊聊关于 ...
最新文章
- java datetime和date_Java 8时间接口localDateTime和Date的对比
- C++实现8皇后问题
- r语言和python-R VS Python:R语言是否真的过时了?
- 20155338 《网络攻防》 Exp7 网络欺诈防范
- 云炬Android开发笔记 7登陆注册功能开发
- 配置 tsconfig.json
- Java 8:对集合中的值进行排序
- 设计模式笔记——生成器模式(Builder Pattern)
- 博途软件中多重背景块的建立_如何正确的理解西门子博途中的—单个实例和多重实例的区别...
- python中的super使用方法[探索4]
- Feign 重试解析
- VC 2008下安装与配置OpenCV2.1
- 如何测试某个网站的图片是否可外链使用
- 【#9733;】选择好游戏认准这30个特质!
- css 标点符号换行问题
- pcap_compile
- 2013年全球重要黑客大会时间及网址一览
- elementUI表格合并行数据
- 几步操作即可实现WhatsApp群发
- Mac系统运行“exe”文件最简单的解决办法