如何开始Python之旅
Python被描述为一种简单的语言——易于学习,易于使用。Python使得为各种各样的应用程序开发强大的软件变得很容易。但是,使用Python和其他任何编程语言一样,很难开始。你要做的每一个选择—操作系统、Python运行时,以及你将用来编写代码的编辑器或IDE。
在本文中,我们将介绍使用Python获得你的适应能力所需的步骤。我们将讨论不同的Python发行版,开发环境中最好的选择,以及用于Python工作空间的工具,比如代码格式化器、项目模板和虚拟环境。希望我们将帮助你避免编写Python编程环境时遇到的一些缺陷。
我们需要解决的第一个问题是,使用Python 2或python3?简短的回答:使用Python 3。
Python 3被认为是当前和未来版本的语言。Python 2现在是一个遗留版本,主要支持向后兼容性。在这一点上,绝大多数第三方Python库支持Python 3,而Python 3具有Python 2中不可用的并发特性和性能优势。另外,两个版本之间的语法差异相当小。如果需要的话,学习Python 2不会花很长时间。
选择你的Python平台
如何开始使用Python将主要取决于你计划作为开发环境使用的操作系统。幸运的是,对于所有主要的操作系统都可以使用Python,因此优秀的Python编辑器和开发环境也是如此,因此你可以自由地从你选择的操作系统开始。
在你安装任何东西之前:本节中的说明是用于安装Python软件基金会所发行的Python标准版本。Python也可以在其他版本中使用,其中一个可能更适合你的需求。在实际安装任何东西之前,请阅读“选择一个发行版”。
Microsoft Windows:Windows默认不能使用Python,但在Windows中安装Python通常不会比下载运行软件时点击几个按钮复杂。如果你使用的是Windows的巧克力包管理器(为什么不呢?这是个好主意,您可以通过在命令提示符键入choco install python3 来安装python3来获得最新版本。
Linux:Python是关于每个主要Linux发行版的标准问题包。问题是您是否会有默认安装的Python最新版本。一些Linux爱好者将Python的较老版本打包,也是一个很好的方法。例如,为该特定发行版编写的Python脚本可能依赖于给定版本的Python。
如果是这样的话,您可能需要使用包管理器来安装另一个版本的Python。如果您想避免与已经安装的版本冲突,pyenv项目允许你指定想要用作默认值的Python的多个安装版本。它还允许为特定项目设置Python版本。
MacOS:MacOS上的情况与Linux类似,有几个例外。首先,最新版本的MacOS(10.11)中唯一预先安装的Python版本是Python 2.7.10。如果您想使用Python 3,则需要使用Homebrew来安装它。你可能还想使用pyenv来管理它。
如果你安装了Docker,你可能只需获得一个具有Python运行时的Docker容器,并以此作为项目的基础。这可能是最好的方法,如果你最终打算通过Docker来部署应用程序,你最好从这里开始。
选择Python发行版
Python可以通过多种不同的发行版来使用,或者重新打包语言运行时。正如不同的Linux发行版是为了满足不同的用例,不同的Python发行版吸引不同的受众和使用场景。
请注意,这并不是Python发行版的最终列表。还有许多其他可用的类似用例,但这些是最著名和最广泛使用的。
CPython:这是Python软件基础创建的默认Python运行时,也是Python的最通用版本。除了解释器和标准库之外,它还包括了一个由Python解释器(例如:,SQLite的二进制文件)。
注意,CPython没有直接提供的技术支持。它确实有一个内置的机制,可以添加名为pip的第三方包,但是更大更复杂的包——特别是那些具有二进制依赖的窗口的包——有时会挑战它的运行。
ActivePython:ActiveState市场有大量的商业和企业级的语言运行时间和ide。ActivePython包含了核心的CPython运行时,并预先安装了几十个受欢迎的第三方库,这些库在不同的规程中使用,因此需要比CPython更少的编程来完成这些工作。ActivePython还通过Intel math内核库增加了许多Python的数学和科学库的性能改进。
没有必要花钱使用ActivePython,发行版有三种版本:免费版(没有服务支持)、商业版(有服务支持、需要额外费用)和企业版(有服务支持、法律费用、大量额外费用)。潜在的企业用户可以从金字塔底层开始工作,以查看ActivePython是否适合他们的项目。
提示:企业用户想要免费使用普通的第三方库,他们可能需要付费支持。
PyPy:作为CPython的一个替代替代品,PyPy最大的区别是它通过JIT(及时)编译器来加速Python应用程序。一些速度可以是戏剧性的,在数量级的数量级上。然而,性能改进将在长时间运行的应用程序中表现得最为显著,而不是执行和退出的自动化样式脚本。
提示:长时间运行的服务的开发人员,Python的动态变得很有用(并且在这里没有使用C扩展)。
Anaconda:Python的一个大用例是数学和统计——工程,数据分析,机器学习。一些Python发行版已经弹出,专门用于那些用例。连续性分析的Anaconda是最著名和最广泛使用的。和ActivePython一样,它为数学和统计捆绑了许多常见的Python库,并尽可能地使用优化的数学库版本。Anaconda还为管理第三方库提供了自己的安装程序,通过管理它们的二进制依赖关系,使这些包更容易保存。
提示:任何使用Python进行数据分析或机器学习的人。Anaconda并不局限于这些用例,而是对它们进行了大量的优化。Enthought Python发行版以同样的方式构建,并用于类似的用例。
选择一种Python IDE
从理论上讲,你不需要任何超过文本编辑器和Python运行时的东西,来开发Python中的软件。在实践中,使用Python支持的IDE开发任何脚本,比使用纯文本更有用。
如果你已经用IDE在开发软件,那么你也可以使用它来编写Python编程。大多数流行的ide都会健壮的支持Python:
微软 IDE: Visual Studio和Visual Studio都通过扩展提供了优秀的Python支持,因此,任何已经在ide之上构建的工作流都需要安装适当的附加组件。
Eclipse广泛应用于Java,但也有其他语言,它也通过附加组件支持Python。或者,你可以使用LiClipse,一个Eclipse IDE的版本,使用各种python支持的附加组件预先安装并随时准备运行。
许多MacOS用户称赞这个出色的文本编辑器的速度、简单性和威力,而且它也有Python支持。崇高的文本甚至有一个集成的Python解释器,它的许多插件都是用Python编写的,这使得Python开发人员可以很容易地用卓越的文本来加强他们的工作流。
Vim和Emacs都有强大的Python支持,可以进一步增强。Vim拥有Python模式插件,Emacs拥有可以通过附加组件增强的基本Python支持。
也有许多Python专用ide,涵盖了各种用例:
与CPython捆绑在一起的IDLE,适用于将快速脚本组合在一起,并帮助那些新的语言获得它们的位置。
来自JetBrains的PyCharm被广泛推荐,原因不难看出。它支持许多原生的Python世界的工具(例如:,Jupyter笔记本电脑),但也努力使这些工具易于访问和易于使用。
Komodo是由ActiveState生产的IDE,它可以作为ActiveState自己的ActivePython的紧密补充,但它也适用于CPython。
Spyder主要针对的是科学和统计数据的人群,而不是一般的Python软件开发人员,但它包括有价值的东西,比如内置的Jupyter笔记本的支持。
选择你的Python包
如果你使用的是ActivePython或Anaconda这样的发行版,许多常见的第三方Python库要么是预先安装的,要么是通过一个工具从IDE制造商自己的存储库中获取更多的包提供的。如果你使用的是CPython或者其他没有提供这些类型的便利的发行版,那么添加第三方库就有点麻烦了。
Python软件基金会维护了大量的第三方库,即Python包索引(PyPI)。PyPI中的任何包都可以通过pip命令行工具添加到Python安装中。然而,有些包需要为特定的平台构建的二进制文件,而不是PyPI中的每一个包都有二进制文件用于每个平台。在Linux中克服这个问题并不困难,因为它通常允许在飞行中构建二进制文件,但是在Windows中这样做就不那么简单了。
加州大学欧文分校(University of California,Irvine)的克里斯托弗·戈尔克(Christoph Gohlke)提出了一个部分解决方案。他为许多流行的Python包提供了一个非官方的预构建的Windows二进制文件存储库。大多数软件包都是用于科学计算应用程序或机器学习的。NumPy,TensorFlow),但很多都覆盖了更多的通用用例。用于图像处理的枕头,或异步HTTP服务器Aiohttp。
如果你使用Windows...
对于某些Python项目,Windows用户需要比Linux、MacOS和其他基于unix的系统的用户多做一些手工操作。Windows开发人员必须提供的一种常见工具是C编译器。对于某些包,当这些模块没有以二进制格式提供时,Python将需要一个C编译器来构建某些模块。将Python翻译成C代码的Cython需要一个C编译器来生成工作二进制文件。
好消息是微软自己的C编译器可以通过微软Visual Studio Community Edition免费获得和安装。也可以通过像Cygwin或MSYS2这样的项目来安装GCC(Gnu编译器集合)。然而,由于Visual Studio C编译器被用来在Windows上构建CPython,使用Visual Studio保证二进制文件之间的一致性。
你可能需要的另一个第三方添加,但通常不默认安装的是LLVM编译器框架。一些Python项目使用llvm -举例。Numba将Python函数转换为程序集。如果您在其中一个包中使用,则需要自己安装LLVM,或者使用Anaconda或另一个具有LLVM预集成的Python发行版。
最后,Windows不包括修订控制软件,例如Git。如果没有找到,与Git集成的ide将会犹豫。你可以用Git来手动获得Git,也可以用巧克力来安装。
保持你的Python代码纯净度
大多数语言都有一些执行代码链接和语法标准化的方法。在Python中,有一个包来处理这个工作。所有主要的ide都有一些集成的支持,所以它们值得添加到您的工作空间中。
管理Python代码格式的规则在名为PEP 8的文档中编码。如果你想将这些规则应用于给定的代码库,工具autopep8可以自动完成这项工作。它将Python代码与PEP 8匹配,并返回需要开发人员注意的特定行的警告。大多数带有Python支持的ide都可以使用autopep8作为默认的代码格式化程序。
将格式化规则应用于Python的新项目是yapf。这个工具最初是由谷歌开发的,它完全重新格式化文档,根据PEP 8规则删除所有现有的格式化和重新格式化。使用yapf的一个潜在的陷阱是,它可能会删除你想要手工指定的格式——例如,对于数据文字——但是你可以使用内联注释来切换yapf格式,在需要的时候进行。
像Python这样的动态语言允许开发人员引入细微的bug,但是Python支持工具来帮助解决这些问题。例如,Pylint长期以来一直是Python的常用代码链接工具之一。在其他方面,它可以使用在Python 3.5中引入的可选类型提示功能来检查类型不匹配。另一个项目Mypy专注于类型检查。随着时间的推移,Mypy可能成为Python更有效地编译成本地代码的一种方式(尽管不能为此屏住呼吸)。
创建Python项目模版
如果你发现自己一次又一次地重新创建了相同类型的项目,那么可以省去一些麻烦,为这个项目创建一个模板。这样做的一种方法是为空白项目创建一个Git存储库,随着时间的推移逐步修改它(例如,新版本的库可用),并为每个修订创建分支或标记。然后,只需通过克隆存储库来实例化一个新项目。
使用Python,你可以通过Cookiecutter项目进一步推进这一步。新的Python项目可以使用Cookiecutter模板来引导,这些模板可以存储在Git中,并根据需要克隆。有一个很好的机会,一个Cookiecutter模板可以用于启动下一个项目,并且您可以始终共享自己创建的模板。
保持Python项目与虚拟环境的直接关系
您使用的Python项目越多,就越有可能使用多个版本的库。示例:你试图维护一个遗留项目,该项目依赖于较旧版本的某些东西,同时构建一个使用相同库的新版本的替换。
Python提供了一种解决这个问题的方法:虚拟环境。虚拟环境允许项目文件夹有其本地库副本,这些库取代安装在Python解释器中的版本。其中大部分是通过命令行工具virtualenv来管理的,它允许您在给定的时刻切换使用哪种虚拟环境。另一个工具virtualenvwrapper进一步自动化了创建虚拟环境的过程。
在IDE中直接支持Python虚拟环境很有可能。例如,PyCharm有内置的虚拟环境支持。
创建虚拟环境的另一种选择是使用Python运行时的独立安装。例如,Windows的CPython可以在“可嵌入的zip文件”格式中获得,这种格式在未打包时可以在自己的子目录中提供最小的Python安装。如果你正在对Python运行时的多个版本进行测试,并且您不想正式安装每个版本并在它们之间进行切换,这是实现这一目标的一种方法。
使用自包含的Python安装有一些缺点。首先,在完整的Python部署中发现的许多特性在默认情况下是不可用的,比如Tkinter UI工具包。(包括SQLite是)。另外,像pip这样的工具并不容易获得;您必须手动提供任何第三方包,或者至少设置PYTHONPATH环境变量(该变量指定可以在何处找到包)以包含到这些包的路径。
分享你的Python应用
Python并没有提供生成一个独立的可执行或自包含的Python程序副本的本地方法,但是第三方库已经填补了这个空白。他们通过将应用程序与Python运行时的副本捆绑在一起来实现这一点。
许多不同的项目可以帮助你做到这一点,但是最著名和最积极的是PyInstaller。PyInstaller有能力为Python提供许多通用的第三方库,甚至那些有二进制模块的应用程序(例如熊猫或NumPy)。
最后,如果你创建了一个你认为会对其他人有用的Python项目,那么请考虑如何打包项目,以便在PyPI上重新分配。第一次这样做时,可能有点尴尬,因为你可能会发现项目的布局需要重新修改以符合PyPI打包标准。但这是值得学习的,因为通过PyPI提供的项目可以很容易地获得通过,并且更容易获得用户的反馈。
https://www.infoworld.com/article/3209091/application-development/how-to-get-started-with-python.html?nsdr=true&page=2
相关阅读:
为Docker和Kubernetes提供的4个第三方安全工具
更多文章请关注