引言
在本实验中,你将学习管理 Python 虚拟环境的基本实践。我们将涵盖如何为项目创建隔离的环境、安装特定依赖项、移除不必要的包,以及最终删除环境以释放磁盘空间。这些技能对于维护一个干净且有条理的开发工作流程至关重要。
创建和激活虚拟环境
首先,让我们为示例项目创建一个隔离的环境。使用虚拟环境可以确保此项目的包不会与其他项目的包或系统范围的 Python 安装发生冲突。我们将使用 venv 模块,这是 Python 自带的标准工具。
设置脚本已在 /home/labex/project/my_web_app 为我们创建了一个项目目录。让我们进入该目录。
cd my_web_app
现在,在此目录中创建一个名为 venv 的虚拟环境。将环境目录命名为 venv 是一种常见的约定。
python3 -m venv venv
此命令会创建一个包含新 Python 安装的 venv 目录。你可以通过运行以下命令查看其内容:
ls -F venv/
你应该会看到类似 bin/、include/、lib/ 的子目录和一个配置文件。
bin/ include/ lib/ lib64@ pyvenv.cfg
要开始使用此环境,你需要“激活”它。
source venv/bin/activate
运行此命令后,你会注意到你的 shell 提示符会发生变化,显示 (venv),这表明虚拟环境已激活。现在你运行的任何 Python 或 pip 命令都将使用此环境内的可执行文件和包。
你可以通过检查 Python 可执行文件的路径来验证这一点:
which python
输出将指向你 venv 目录内的 Python 二进制文件。
/home/labex/project/my_web_app/venv/bin/python
安装和隔离依赖项
在虚拟环境激活后,我们现在可以安装项目的依赖项。为你创建了一个 requirements.txt 文件,其中列出了必需的包。
使用 pip 安装这些包:
pip install -r requirements.txt
Pip 将下载并安装 flask、requests 及其依赖项到 venv 中。
要查看专门在此环境中安装的包,请使用 pip list:
pip list
你将看到 flask、requests 以及刚刚安装的其他包。
Package Version
------------------ --------
certifi ...
charset-normalizer ...
click ...
Flask 2.2.2
idna ...
itsdangerous ...
Jinja2 ...
MarkupSafe ...
pip ...
requests 2.28.1
setuptools ...
urllib3 ...
Werkzeug ...
现在,让我们看看隔离的威力。停用环境以返回到系统的全局上下文。
deactivate
提示符中的 (venv) 前缀将消失。现在,再次运行 pip list。
pip list
你会注意到 flask 和 requests 不再列表中,因为它们只安装在虚拟环境中,从而保持了你的全局 Python 环境的整洁。
移除未使用的包
随着项目的演进,一些依赖项可能会过时。移除它们以保持环境精简并更新你的 requirements.txt 文件是一种良好的实践。
首先,重新激活虚拟环境以管理其包。
source venv/bin/activate
假设我们的项目不再需要 requests 包。我们可以使用 pip 来卸载它。-y 标志会自动确认卸载。
pip uninstall -y requests
通过再次列出已安装的包来验证该包是否已被移除。
pip list
你将看到 requests 及其依赖项(例如 urllib3、certifi 等,如果它们不再被任何其他包需要)已消失。
移除包后,你应该更新你的 requirements.txt 文件以反映环境的当前状态。你可以通过将当前包列表“冻结”到文件中来完成此操作。
pip freeze > requirements.txt
你可以查看更新后的文件以确认更改:
cat requirements.txt
该文件现在将仅列出 flask 及其依赖项。
click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...
最后,我们暂时停用该环境。
deactivate
删除整个虚拟环境
当项目完成,或者你想从一个全新的环境重新开始时,最简单的清理方法是删除整个虚拟环境目录。
首先,确保你不在 my_web_app 目录内,因为通常不建议删除你当前所在的目录。让我们移动到父目录。
cd /home/labex/project
在删除它之前,你可以使用 du (disk usage) 命令检查虚拟环境占用的磁盘空间。
du -sh my_web_app/venv
输出将显示目录的总大小。
30M my_web_app/venv
现在,删除整个 venv 目录。rm -rf 命令会递归地、强制地删除目录及其所有内容。请谨慎使用此命令。
rm -rf my_web_app/venv
通过列出 my_web_app 的内容来验证目录是否已消失。
ls my_web_app
你将看到只有 requirements.txt 文件仍然存在。虚拟环境已被完全清理。
requirements.txt
总结
在本实验中,你学习了管理 Python 虚拟环境的完整生命周期。你实践了使用 venv 创建环境、激活环境、从 requirements.txt 文件安装依赖项、观察包隔离、移除不需要的包,以及最后通过删除整个环境目录进行清理。这些都是任何 Python 开发者维护干净、可复现且无冲突的项目设置的关键技能。



