Skip to main content

Python虚拟环境教程:使用Virtualenv和Poetry

简介

首先这是篇向大家介绍虚拟环境virtualenvpoetry小教程,专注在这三个方面:

  1. 什么是Python虚拟环境
  2. 为什么要用它
  3. 怎么用它

什么是虚拟环境

简而言之,就是一个用来隔离东西的东西。可以简单把它理解为把一些安装的包独立放在某一个文件夹的机制,Python可以在某一个固有的独立文件夹里查找和加载安装的包,这样就实现了一台电脑里多个隔离的Python。

然后它是可以防止冲突,比如不同的项目可能有相同的名字的包,如果安装在一起,必然产生冲突。

![c282886a22d14ac093ed7c300e408527 (1)](http://localhost:45462/image/c282886a22d14ac093ed7c300e408527 (1).png)

为什么要用虚拟环境

首先是避免Python版本冲突,有时候你安装完新版本的Python后还需要使用旧版本的Python,也有可能需要使用多个版本的Python,这可能使你不得不把它们分别安装在不同的目录,然后在使用的时候,小心翼翼地选择你想要的Python版本,就像下图这样。

58b9eae3639449ffbb7f6b9ca59ee9fe

虚拟环境可以让你在同一个系统中实现多个版本共享,使用起来还是像只有一个Python版本一样是不是方便了许多。

其次就是避免包版本的冲突,比如你有两个项目,一个依赖Django 2.2,一个依赖Django 4.0,如果没有虚拟环境,只能存在一个版本,它们import的时候必然有一个启动不了。

a8444b997cd443af831c671fb4d974e2

有虚拟环境的话,就很简单,各自的环境是独立的,你用的你的2.2,我用我的4.0,各自安好。

c37f153b8eb54cdf9c76314745bffe4f

如何使用虚拟环境

下面举例说明如何使用虚拟环境,

39c750966ade49e187f8cfc0f3ef0b8e

使用virtualenv

# 首先是安装virtualenv
$ pip install virtualenv

# 然后在项目目录 package/project 创建环境文件夹
# 这里的env就是创建的虚拟环境了,里面会独立安装这个虚拟环境的程序包。接下来激活它,
virtualenv env

# 你可以看到系统的提示符前缀变成了(env),表示你正处于这个虚拟环境之中。这时候安装程序包就会安装到env目录中去,
$ source env/bin/activate
(env) $

(env) $ pip install google-search-results

(env) $ deactivate
$

使用poetry

$ pip install poetry

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命令,