Python虚拟环境virtualenv与依赖管理pipreqs实战指南

周末不加班
周末不加班
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍Python虚拟环境virtualenv的安装与配置方法,包括纯净模式与系统模块继承模式的创建区别。同时讲解如何利用pipreqs工具自动生成项目依赖文件requirements.txt,解决第三方包管理难题,适用于多版本Django及Python项目的隔离开发与维护场景。

virtualenv简介与核心概念

virtualenv简介

含义:

virtual意为虚拟,env是environment(环境)的缩写,因此virtualenv指代虚拟环境。顾名思义,它构建了一个独立的新运行空间,类似于虚拟机或Docker容器,将特定内容隔离出来。在这个独立的容器中,用户可以自由安装所需的依赖包和软件,且容器之间相互独立,互不干扰。

为何要用虚拟环境:

【前提概要】

Django是一个流行的Web框架,其迭代更新频繁。由于版本间差异较大,旧版本需要淘汰,新功能需要引入,导致不同版本间往往不兼容。例如,Django 1.3、1.4与1.8之间存在显著差异。

此外,Python版本本身也存在差异,如工作中常见的Python 2.x与Python 3.x并存的情况。

【故事背景】

假设正在进行Python Web开发,使用Django框架。此时手头有两个老项目A和B需要维护,同时新项目C也在开发中。项目A使用Django 1.3,项目B使用Django 1.4,而新项目C使用Django 1.8。问题在于,如何在本地同时开发和维护这三个项目?

常规做法可能是:当项目A出现BUG需要修复时,先执行以下命令删除原有版本:


pip3 uninstall django

然后再执行下面的命令安装django1.3

pip3 install django==1.3

数分钟后,BUG修复完毕,接着进行新项目C的开发,此时又要重复上述卸载和安装的过程。

这仅是理想情况。更糟糕的情况是,基于Django的第三方依赖也与Django版本紧密相关。除了安装和卸载Django本身,还需要反复卸载和安装其依赖包,这显然非常繁琐且容易出错。

VirtualEnv能做什么呢?

virtualenv可以搭建独立且隔离的Python运行环境,使单个项目的运行环境与其它项目分离。它还能在一台机器上创建多个独立的Python环境。VirtualEnvWrapper则为前者提供了一些便捷的命令行封装工具。

virtualenv是一个优秀的Python虚拟环境创建工具,其最大优势在于:允许每个Python项目使用独立的环境,既不影响系统环境,也不影响其他项目的运行。

virtualenv用于创建独立的Python环境,在这些环境中可以选择不同的Python版本或不同的Packages。即使没有root权限,也能在环境中重新安装新套件,且互不影响。我们可以简单地将虚拟环境视为一个沙箱系统,在其中进行各种操作而不会影响外部环境。

virtualenv安装与创建模式详解

virtualenv安装和使用

virtualenv本质上是一个Python包,使用pip进行安装:

pip3 install virtualenv

在工作目录下创建虚拟环境(默认在当前目录):注意需要自定义虚拟环境的名字!

创建虚拟环境:

cmd命令创建(创建目录为cmd命令当前目录,因此最好先切换到所需目录下再进行创建)

(1) virtualenv env_t1 (创建纯净环境)

(2) virtualenv --system-site-packages env_t2 (创建环境,继承原安装的模块)

创建虚拟环境有两种模式:一个是纯净模式,一个是基于系统环境的创建(自带了系统安装的所有模块)。

-# 基于系统环境的创建模式,其中的模块其实是对系统模块的一个引用,在虚拟环境中是无法卸载的,因为它只是一种引用关系,除非系统卸载了该模块,它才会消失。

-# 纯净模式,其中不包含系统的模块,需要自己下载安装,从头开始。这是在虚拟环境下安装的,你可以在后期进行卸载。

一般来说,推荐使用纯净模式创建虚拟环境,这样可以根据需求安装第三方模块,同时如果需要卸载,也可以在虚拟环境中选择性卸载。这样自由度更大,而不像另一种模式那样引用系统所有模块且无法在虚拟环境中删除,从而影响加载速度等。

使用pip3 list来查看当前环境下安装的模块列表

激活该虚拟环境:

-windows进到目录里的Script文件夹输入:activate

-linux:source env1/Scripts/activate

退出虚拟环境:

-deactivate

在pycharm中使用虚拟环境:

-files--settings--Project--Project Interpreter--add选择虚拟环境路径下的python.exe即可

pipreqs依赖自动生成工具使用

三、pipreqs模块的介绍和使用

当运行别人的项目时,首先需要安装项目的依赖,否则无法运行。Python的pipreqs模块提供了自动生成项目依赖内容的功能。

安装:


pip3 install pipreqs

使用:

# 然后在项目所在的目录下使用命令生成包含依赖内容的文件

pipreqs ./

如果出现编码格式错误:


UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 776: illegal multibyte sequence

解决方法在命令后面指定编码格式:


pipreqs ./ --encoding=utf8

如果已经生成过一次依赖包文件requirements.txt,但是项目新增了一些模块,此时再在后面添加--force覆盖参数重写即可


pipreqs ./ --encoding='utf8' --force

拿到依赖包文件我们可以快速自动下载依赖一键安装:


pip3 install -r requirements.txt 

tips:导出所有已安装的第三方模块:


pip3 freeze > package.txt

以上这篇Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。