当前位置: 首页 > news >正文

虚拟环境和包

目录

12. 虚拟环境和包

12.1. 简介

12.2. 创建虚拟环境

12.3. 使用 pip 管理包


12. 虚拟环境和包

12.1. 简介

        Python 应用程序经常会使用一些不属于标准库的包和模块。应用程序有时候需要某个特定版本的库,因为它需要一个特定的 bug 已得到修复的库或者它是使用了一个过时版本的库的接口编写的。

        这就意味着可能无法安装一个 Python 来满足每个应用程序的要求。如果应用程序 A 需要一个特定模块的 1.0 版本但是应用程序 B 需要该模块的 2.0 版本,这两个应用程序的要求是冲突的,安装版本 1.0 或者版本 2.0 将会导致其中一个应用程序不能运行。

        这个问题的解决方案就是创建一个虚拟环境 通常简称为 “virtualenv”),包含一个特定版本的 Python,以及一些附加的包的独立的目录树。

        不同的应用程序可以使用不同的虚拟环境。为了解决前面例子中的冲突,应用程序 A 可以有自己的虚拟环境,其中安装了特定模块的 1.0 版本。而应用程序 B 拥有另外一个安装了特定模块 2.0 版本的虚拟环境。如果应用程序 B 需求一个库升级到 3.0 的话,这也不会影响到应用程序 A 的环境。

12.2. 创建虚拟环境

        用于创建和管理虚拟环境的脚本叫做 pyvenvpyvenv 通常会安装你可用的 Python 中最新的版本。这个脚本也能指定安装一个特定的版本的 Python,因此如果在你的系统中有多个版本的 Python 的话,你可以运行 pyvenv-3.5 或者你想要的任何版本来选择一个指定的 Python 版本。

        要创建一个 virtualenv,首先决定一个你想要存放的目录接着运行 pyvenv 后面携带着目录名:

pyvenv tutorial-env

        如果目录不存在的话,这将会创建一个 tutorial-env 目录,并且也在目录里面创建一个包含 Python 解释器,标准库,以及各种配套文件的 Python “副本”。

        一旦你已经创建了一个虚拟环境,你必须激活它。

        在 Windows 上,运行:

tutorial-env/Scripts/activate

        在 Unix 或者 MacOS 上,运行:

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.2+ (3.4:c7b9645a6f35+, May 22 2015, 09:31:25)...
>>> import sys
>>> sys.path
['', '/usr/local/lib/python35.zip', ...,
'~/envs/tutorial-env/lib/python3.5/site-packages']
>>>

12.3. 使用 pip 管理包

一旦你激活了一个虚拟环境,可以使用一个叫做 pip 程序来安装,升级以及删除包。默认情况下pip将会从 Python Package Index,<https://pypi.python.org/pypi>, 中安装包。你可以通过 web 浏览器浏览它们,或者你也能使用 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有许多子命令:“搜索”,“安装”,“卸载”,“freeze”(译者注:这个词语暂时没有合适的词语来翻译),等等。(请参考installing-index指南获取 pip 更多完整的文档。)

        你可以安装一个包最新的版本,通过指定包的名称:

-> pip install novas
Collecting novasDownloading novas-3.1.1.3.tar.gz (136kB)
Installing collected packages: novasRunning setup.py install for novas
Successfully installed novas-3.1.1.3

        你也能安装一个指定版本的包,通过给出包名后面紧跟着 == 和版本号:

-> pip install requests==2.6.0
Collecting requests==2.6.0Using cached requests-2.6.0-py2.py3-none-any.whl
Installing collected packages: requests
Successfully installed requests-2.6.0

        如果你重新运行命令(pip install requests==2.6.0),pip会注意到要求的版本已经安装,不会去做任何事情。你也可以提供一个不同的版本号来安装,或者运行 pip install --upgrade 来升级包到最新版本:

-> pip install --upgrade requests
Collecting requests
Installing collected packages: requestsFound existing installation: requests 2.6.0Uninstalling requests-2.6.0:Successfully uninstalled requests-2.6.0
Successfully installed requests-2.7.0

pip uninstall 后跟一个或者多个包名将会从虚拟环境中移除这些包。

pip show 将会显示一个指定的包的信息:

(tutorial-env) -> 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:

pip list 将会列出所有安装在虚拟环境中的包:

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

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 安装所有必须的包:

-> 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, requestsRunning setup.py install for novas
Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0

pip还有更多的选项。请参考installing-index指南获取关于 pip 完整的文档。当你编写一个包并且在 Python Package Index 中也出现的话,请参考distributing-index指南。

http://www.lryc.cn/news/189029.html

相关文章:

  • springboot配置文件读取
  • 纵享丝滑!Cesium + ffmpegserver 生成高质量动态视频【逐帧生成】
  • Linux下C++编程-进度条
  • C语言常见题目(1)交换两个变量的值,数的逆序输出,猜数游戏,两个数比较大小等
  • Springboot使用sqlcipher4加密sqlite数据库
  • 指针拔尖(2)(巩固提高,全网最牛,包会,看不懂带电脑来找我)
  • 本地部署多语言代码生成模型CodeGeeX2
  • C语言刷题练习(Day2)
  • docker- harbor私有仓库部署与管理
  • 自动化测试的优缺点
  • 深度学习基础知识 Dataset 与 DataLoade的用法解析
  • 【ElasticSearch】深入探索 DSL 查询语法,实现对文档不同程度的检索,以及对搜索结果的排序、分页和高亮操作
  • 使用wireshark解密ipsec ISAKMP包
  • 算法进阶-搜索
  • 时空智友企业流程化管控系统 sessionid泄露漏洞 复现
  • QT编程,QMainWindow、事件
  • 人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用
  • C++学习day5
  • 1.软件开发-HTML结构-元素剖析
  • QTableWidget 表格增删数据
  • Tableau:商业智能(BI)工具
  • 【gmail注册教程】手把手教你注册Google邮箱账号
  • docker版jxTMS使用指南:数据采集系统的高可用性
  • vue如何禁止通过页面输入路径跳转页面
  • mac,linux环境的基础工具安装【jdk,tomcat】
  • chrome窗口
  • 某快递公司Java一面
  • 【C++ Primer Plus学习记录】指针——声明和初始化指针
  • 切换至root用户时,命令提示符颜色为白色,如何修改?
  • 设计模式——17. 状态模式