python导引第十二章,十三章,十四章 python导引编译之十三

python导引第十二,十三,十四章 python导引编译之十三

标题12. 虚拟环境和打包Virtual Environments and Packages

标题12.1.引言 Introduction

python应用常常使用打包和那些不作为标准库部分的模块。应用有时需要一个资料库特指的版本,因为这个应用也许要求某个特别的毛病已经固化,或者该应用也许是用某个老式的资料库接口的版本编辑的。
这意味着对于某个版本安装的python而言,你要它满足每一个应用的要求,那也许是不可能的。如果应用A需要版本1.0中的某个模块,但应用B需要的是2.0,那么这类要求就有冲突,你或者安装了1.0,或者安装了2.0,这总会是其中的某一个版本无法运行。
解决这个问题将是建立一个虚拟环境,一个自满足的目录树,该目录树含有python的一个特指版本的安装,另加上许多打包。
由此不同的应用可以使用不同的虚拟环境。为解决冲突要求的早期样板,应用A可以有其带有1.0版的安装,而应用B有另一个带有2.0版本的虚拟环境。如果应用B要求一个资料库升级到3.0版,这个要求将不影响到A的虚拟环境。

标题12.2. 创建虚拟环境Creating Virtual Environments

用来创建和管理虚拟环境的模块名为veny,这个模块通常安装在你可用的那个python版本中。如果你有多版python在你的系统中,你可以选择一个版本,通过运行python3或者你想用的任意版本。
为创建一个虚拟环境,决定一个目录,你想把这个虚拟环境放置的地方,然后运行那个veny模块,经由目录路径获得脚本运行。

python3 -m venv tutorial-env

这将创建这个引导tutorial-env目录,如果该目录不存在的话,也创建一组目录,其中含有一个python解释器的副本,标准资料库的副本和各种支持文件的副本。
一个普通目录对虚拟环境 的定位是.veny。这个名字保持了你壳中的那个一般隐藏的目录,不常见到,当你给出一个名字,想通过这个名字解释它为什么这个目录存在的时候。这个目录也能防止用某些工具支持的各种定义文件的虚拟环境之间发生冲突。
一旦你创建了一个虚拟环境,你就可以激活它。
在window中,运行:

tutorial-env\Scripts\activate.bat

在Unix或者MacOS中,运行:

source tutorial-env/bin/activate

(这个脚本是在bash shell中编辑的。如果你使用csh或者fish shell,那么就有备选的activate.csh和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']
>>>

标题12.3. 用pip管理打包Managing Packages with pip

你可以安装、升级和移除一些打包,这些打包使用一个称作pip的程序。借助缺省,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有许多子指令:“搜寻”,“安装”,“卸载”,“冻结”等等(需要完整的pip文件,请咨询“安装python模块指南”)
你可以安装一个打包的最新版,只要你指定一个打包的名称:

(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将注意到,这个版本已经安装过了,它不会再装一次。你可以提供一个不同版本的数字去获得这个版本,或者你可以运行pip安装–把版本升级到最新版的那个打包:

(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

pip通过一个或者多个打包名称跟随而生成的卸载将移除那些来自虚拟环境的打包。
pip 显示将展现出有关特指打包的信息:

(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: [email protected]
License: Apache 2.0
Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages
Requires:

pip列表将展示所有安装在虚拟环境中的所有的打包:

(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冻结将产出一个类似的被安装打包的列表,但是这个输出使用了pip安装所期待的格式。一个通常的习惯是把这个列表用一种文本要求的文件,即所谓requirements.txt file:

(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 file可以被确定为版本控制,并转换到一个应用的部分。用户能够安装所有带有安装-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

pip还有更多的运用选择。如需要完全的pip文件,请咨询“安装 python模块导引”。当你写下一个打包并且使得这个打包在python打包索引中可用的时候,请咨询“分布性python模块指南”。

标题13. 现在还有些什么可干?What Now?

阅读完这篇导引,很可能强化了你对使用python的兴趣—你应该渴望运用python去解决你实在世界的一些问题。那么,你应该进一步地学习些什么东西呢?
这个导引是python文件集成中的一部分,这个集成文件中还有:
python标准资料库:
你应该全部浏览这个手册,它给予了标准资料库中有关类型、函数、还有模块的完全的参考材料(虽然过于简洁)。标准python分布包括了许多附加的编码。有用来读取邮箱的模块,恢复来自HTTP文件的模块,生成随机数字的模块,分析指令线选择的模块,撰写CGI程序的模块,压缩资料的模块,以及完成其它一些任务的模块。通过资料库参考的浏览将给你一个什么东西可用的观念。
“安装python模块”解释了,如何安装附加的模块,由那些被其他python用户编写的模块。
“python语言参考”:
有关python语法和语义的一个很详细的解释。需要认真下力的阅读,但这对于python语言本身有完全导引式了解需求的人,是非常有用的。

更多的python资源:

https://www.python.org:
这是python的主流网页,它含有编码,文件,围绕该网页的相关网页的指针。该网页在全世界许多地方镜像似存在,例如欧洲,日本,澳大利亚,镜像也许比主网页更快,依赖于你所在的地理位置。

https://docs.python.org:
快速登陆python文件网页的网址。

https://pypi.org:
python打包索引,绰号为奶酪商店1号,它是一个用户创建的模块索引,用来供人们下载。一旦你把你的编码发布,你就可以在那里登记注册,以便其他人也可以在这个索引中发现。

https://code.activestate.com/recipes/langs/python/:
这个python食谱是大规模编码样本的汇集,更大模块的汇集,和有用的脚本的汇集。特别著名的贡献被收集在一本书中,书名也是同样的名字《python食谱》 (在O’Reilly & Associates出版,书号: ISBN 0-596-00797-3.)

http://www.pyvideo.org:
收集了来自参考资料和用户群集会的视频 。

https://scipy.org:
这个科学python项目包括了许多属于科学领域的模块,例如快速阵列计算和加上诸如线性代数,傅里叶转换,非线性解决,随机数字分布,统计分析等等类的打包主机上的操作。

和python相关的那些问题和问题报告,如果你想了解,你可以电邮给新闻组网址newsgroup comp.lang.python,或者把邮件送给邮箱列表,邮箱为 [email protected]. 新闻组和邮箱列表有网关门禁,所以邮递的信息将自动地转向另外的地方。一天有无数的邮递信息,提出问题和回答问题,建议性的特性,申报新的模块。邮寄列表在存档中可用,这些存档保留在以下网址上:https://mail.python.org/pipermail/.。

在邮递之前,确信检查了这样一个列表“经常问询列表”(也称为FAQ)。这个FAQ回答许多问题,常常是一问再问的问题,并且很可能早就有了恰当的回复,

脚注:
1“奶酪商店”是一个巨蟒剧团的故事,一个顾客进入一个奶酪商店,但是他无论选择什么奶酪购买,店员都告知他,这种奶酪没有啦。

标题14. 交互式输入编辑和历史替代Interactive Input Editing and History Substitution

python解释器的某些版本支持当下的线上输入和历史替代的编辑,类似于在Korn shell和GNU Bash shell上发现的装备上编辑。这在使用那个GNU的在线阅读库有效,该库支持各种各样的编辑风格。这个资料库有它自己的文件,我们在这里不能复制的文件。

标题14.1.制作完成和历史编辑 Tab Completion and History Editing

变元和模块名称自动地使得解释器启动以便Tab键去触动那个做完的函数,它观察python的命题名称,当下的位置变元,和可用的模块名称。对于打上点号的表达式,例如字符串string.a,它将从头到尾地评估那个表达式,直到那个‘.’。然后建议从结果对象的归宿来完成。注意,如果一个对象,它带有一个方法getattr(),该对象属于这个表达式的一部分,那么,这可能被处理为定义编码的应用。该缺省的配置也把你的经历保存在一个文件中,该文件为named.python_history这个文件就在你的用户目录之中。这个历史在下一个交互式编辑器的时段还能再次可用。

标题14.2. 交互式编辑器的备选Alternatives to the Interactive Interpreter

这个设施是一个朝向和解释器早期版进行比较,迈开的一大步。然而,某些期待保留了下来:如果合宜的缩略符建议用在连续线上,那就十分优雅。(如果一个缩略符标记要求在下一个,这个分析程序是知道的)完成机制也许使用编辑器的符号表格。一个指令,会去检查(或者建议检查)那些配置的括号,引语等等的指令,也会是十分有用。
一个备选的更强的交互式解释器,它一直都是在做备选准备的,这样的解释器是IPython,它突出了TAB键完结,对象寻求和进一步的历史管理。它也能够遍及地定制和嵌入进其它的应用。另一个类似的,加强交互式环境的解释器是bpython。

猜你喜欢

转载自blog.csdn.net/weixin_41670255/article/details/110173465
今日推荐