Python3.7官方向导翻译之Python虚拟环境和包

介绍

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

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

此问题的解决方案是创建一个虚拟环境,一个自包含的目录树,其中包含特定版本的Python的Python安装以及一些附加包。

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

创建虚拟环境

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

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

python3 -m venv tutorial -env

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

一旦你创建了一个虚拟环境,你可以激活它。

# on windows, run:
tutorial-env\Scripts\activate.bat
# on Unix or MacOS, run:
source tutorial-env/bin/activate

(这个脚本是为bash shell编写的,如果你使用csh或者fish shell,你可以使用替代的activate.csh和activate.fish脚本。)

激活虚拟环境将改变你的shell的提示,以显示你正在使用的虚拟环境,并修改环境,以便运行python将为你提供特定的版本和Python的安装。 例如:

$ 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']
>>>

用pip管理包

您可以使用名为pip的程序来安装install,升级upgrade和删除remove软件包。 默认情况下,pip将从Python包索引https://pypi.org安装包。 您可以在浏览器中浏览Python包索引,也可以使用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的完整文档。)

你可以通过指定包名安装最新版本的包

(tutorial-env) $ pip install novas

您还可以通过提供包名称,后跟==和版本号来安装特定版本的包:

(tutorial-env) $ pip install requests==2.6.0

如果你重新运行这个命令,pip会注意到请求的版本已经安装并且什么也不做。 您可以提供不同的版本号以获取该版本,或者可以运行pip install –upgrade将软件包升级到最新版本:

(tutorial-env) $ pip install --upgrade requests

pip uninstall 后面跟着一个或多个包名会把这些包从虚拟环境中移出

pip show会显示一个特定包的信息

(tutorial-env) $ pip show requests

pip list 会显示虚拟环境安装的所有的包

(tutorial-env) $ pip list

pip freeze会产生一个类似的已安装软件包列表,但输出使用pip install期望的格式。 一个常见的惯例是将这个列表放在一个requirements.txt文件中:

(tutorial-env) $ pip freeze > requirements.txt
(tutorial-env) $ cat requirements.txt
novas==3.1.1.3
numpy==1.9.2
requests==2.7.0

然后可以将requirements.txt提交到版本控制并作为应用程序的一部分提供。 然后,用户可以使用install -r安装所有必需的软件包:

(tutorial-env) $ pip install -r requirements.txt

pip有更多的选项。 请参阅安装Python模块指南以获取有关pip的完整文档。 当您编写了一个包并希望在Python Package Index中提供它时,请参阅Distributing Python Modules指南。

猜你喜欢

转载自blog.csdn.net/u010132497/article/details/80719661