Python 中的虚拟环境和包

本教程是 Python 官方网站上 《Tutorial》 部分文档的翻译,本文档与 官方文档授权一致

1. 概述

Python 应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。

这意味着一个 Python 安装可能无法满足每个应用程序的要求。如果应用程序 A 需要特定模块的 1.0 版本但应用程序 B 需要 2.0 版本,则需求存在冲突,安装版本 1.0 或 2.0 将导致某一个应用程序无法运行。

这个问题的解决方案是创建一个 virtual environment,一个目录树,其中安装有特定 Python 版本,以及许多其他包。

然后,不同的应用将可以使用不同的虚拟环境。要解决先前需求相冲突的例子,应用程序 A 可以拥有自己的 安装了 1.0 版本的虚拟环境,而应用程序 B 则拥有安装了 2.0 版本的另一个虚拟环境。如果应用程序 B 要求将某个库升级到 3.0 版本,也不会影响应用程序 A 的环境。

2. 创建虚拟环境

用于创建和管理虚拟环境的模块称为 venvvenv 通常会安装你可用的最新版本的 Python。如果您的系统上有多个版本的 Python,您可以通过运行 Python3 或您想要的任何版本来选择特定的 Python 版本。

要创建虚拟环境,请确定要放置它的目录,并将 venv 模块作为脚本运行目录路径:

Python3 -m venv tutorial-env

如果它不存在,这将创建 tutorial-env 目录,并在其中创建包含 Python 解释器,标准库和各种支持文件的副本的目录。

虚拟环境的常用目录位置是 .venv。这个名称通常会令该目录在你的终端中保持隐藏,从而避免需要对所在目录进行额外解释的一般名称。它还能防止与某些工具所支持的 .env 环境变量定义文件发生冲突。

创建虚拟环境后,您可以激活它。

在 Windows 上,运行:

tutorial-env\Scripts\activate.bat

在 Unix 或 macOS 上,运行:

source tutorial-env/bin/activate

(这个脚本是为 bash shell 编写的。如果你使用 csh 或 fish shell,你应该改用 activate.cshactivate.fish 脚本。)

Activating the virtual environment will change your shell's prompt to show what virtual environment you're using, and modify the environment so that running Python will get you that particular version and installation of Python. For example:

$ source ~/envs/tutorial-env/bin/activate
(tutorial-env) $ Python
Python 3.5.1 (default, May  6 2016, 10:59:36)
 ……
>>> import sys
>>> sys.path
['','/usr/local/lib/Python35.zip', ……,'~/envs/tutorial-env/lib/Python3.5/site-packages']
>>>

3. 使用 pip 管理包

你可以使用一个名为 pip 的程序来安装、升级和移除软件包。默认情况下 pip 将从 Python Package Index <https://pypi.org> 安装软件包。你可以在浏览器中访问 Python Package Index 或是使用 pip 受限的搜索功能:

(tutorial-env) $ pip search astronomy
skyfield               - Elegant astronomy for Python
gary                   - Galactic astronomy and gravitational dynamics.
novas                  - The United States Naval Observatory NOVAS astronomy library
astroobs               - Provides astronomy ephemeris to plan telescope observations
PyAstronomy            - A collection of astronomy related tools for Python.
……

pip 有许多子命令:“search”、“install”、“uninstall”、“freeze”等等。(请参阅 安装 Python 模块 指南以了解 pip 的完整文档。)

  • 发表于 · 2022.04.13 09:25 · 阅读 · 1708

[版权声明] :本文文字、代码及图片版权归原作者所有,任何媒体、网站或个人未经本网协议授权不得采集、整理、转载或以其他方式复制发表。已经本站协议授权的媒体、网站,在使用时必须注明“稿件来源:学研谷”。

0 条评论

请先 登录 后评论
猜猜我是谁
traveler

10
提问
12
回答
18
文章