python学习笔记(9)—— 虚拟环境和包

文章目录

  • 虚拟环境和包(Virtual Environments and Packages)
  • 介绍(Introduction)
    • 创建虚拟环境(Creating Virtual Environments)
    • 使用pip管理包(Managing Packages with pip)

参考:python 官方教学英文文档

虚拟环境和包(Virtual Environments and Packages)

介绍(Introduction)

Python应用程序经常使用标准库之外的包和模块。有时应用程序需要特定版本的库,因为应用程序可能要求某个特定的bug已经被修复,或者应用程序可能使用过时版本的库接口编写。这意味着一个Python安装不可能满足每个应用程序的需求。如果应用程序A需要某个模块的1.0版本,而应用程序B需要2.0版本,那么这两个需求是冲突的,安装1.0或2.0版本都会导致一个应用程序无法运行。这个问题的解决方案是创建一个虚拟环境,这是一个自包含的目录树,其中包含针对特定版本Python的Python安装,以及一些额外的包。不同的应用程序可以使用不同的虚拟环境。为了解决前面需求冲突的例子,应用程序A可以有自己的虚拟环境,安装版本1.0,而应用程序B有另一个虚拟环境,安装版本2.0。如果应用程序B需要将库升级到版本3.0,这不会影响应用程序a的环境。

创建虚拟环境(Creating Virtual Environments)

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

要创建一个虚拟环境,决定你想要放置它的目录,并以脚本的形式运行venv模块和目录路径:

python3 -m venv tutorial-env

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

虚拟环境的常用目录位置是.venv。这个名称通常将目录隐藏在您的shell中,因此不碍事,同时给它一个解释目录存在原因的名称。它还防止与某些工具支持的.env环境变量定义文件发生冲突。

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

在Windows上,运行:

tutorial-env\Scripts\activate.bat

在Unix或MacOS上,执行:

source tutorial-env/bin/activate

(此脚本是为bash shell编写的。如果你使用csh或fish,则应该用activate.cshactivate.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']
>>>

要停用虚拟环境,在终端输入:

deactivate

使用pip管理包(Managing Packages with pip)

您可以使用名为pip的程序安装、升级和删除包。默认情况下,pip将从Python包索引https://pypi.org安装包。您可以通过在web浏览器中访问Python包索引来浏览它。

pip有许多子命令:" install “、” uninstall “、” freeze "等(参见安装Python模块指南获取pip的完整文档)。

您可以通过指定包的名称来安装包的最新版本:

(tutorial-env) $ python -m pip install novas
Collecting novas
  Downloading novas-3.1.1.3.tar.gz (136kB)
Installing collected packages: novas
  Running setup.py install for novas
Successfully installed novas-3.1.1.3

你也可以通过在包名后面加上==和版本号来安装一个特定版本的包:

(tutorial-env) $ python -m pip install requests==2.6.0
Collecting requests==2.6.0
  Using cached requests-2.6.0-py2.py3-none-any.whl
Installing collected packages: requests
Successfully installed requests-2.6.0

如果您重新运行此命令,pip将注意到所请求的版本已经安装,并且不做任何事情。你可以提供一个不同的版本号来获取该版本,或者你可以运行python -m pip install —upgrade将包升级到最新版本:

(tutorial-env) $ python -m pip install --upgrade requests
Collecting requests
Installing collected packages: requests
  Found existing installation: requests 2.6.0
    Uninstalling requests-2.6.0:
      Successfully uninstalled requests-2.6.0
Successfully installed requests-2.7.0

python -m pip uninstall后跟一个或多个包名将从虚拟环境中删除包。

python -m pip show将显示关于特定包的信息:

(tutorial-env) $ python -m pip show requests
---
Metadata-Version: 2.0
Name: requests
Version: 2.7.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.com
License: Apache 2.0
Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages
Requires:

python -m pip list将显示虚拟环境中安装的所有包:

(tutorial-env) $ python -m pip list
novas (3.1.1.3)
numpy (1.9.2)
pip (7.0.3)
requests (2.7.0)
setuptools (16.0)

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

(tutorial-env) $ python -m 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) $ python -m pip install -r requirements.txt
Collecting novas==3.1.1.3 (from -r requirements.txt (line 1))
  ...
Collecting numpy==1.9.2 (from -r requirements.txt (line 2))
  ...
Collecting requests==2.7.0 (from -r requirements.txt (line 3))
  ...
Installing collected packages: novas, numpy, requests
  Running setup.py install for novas
Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0

你可能感兴趣的:(#,python基础,python,开发语言)