有用的Python工具

朋友,晚上好! 我们有个好消息,我们在“ Python Developer”课程的一个新小组中公开招聘。 该小组已于7月初开始,现在,按照既定传统,我们正在分享为该课程的学生准备的有用翻译。



当您刚开始学习Python时,有人告诉您可以将源文件夹添加到PYTHONPATH环境变量中,然后可以从其他目录中导入代码。 解释者常常忘记说在大多数情况下这是一个坏主意。 有些人可以在Internet上找到它,其他人则是第一手了解它。 但是太多的人(特别是没有经验的程序员)认为没有其他选择。

本文主要针对他们,因为即使您知道有替代方法,接受并开始使用它也不总是那么容易。 Python工具之所以令人困惑,是因为它们是许多基于另一个工具构建的软件,并且由此产生了许多重叠和问题。 很难理解如何在项目中正确使用这些工具。

因此,我决定写这篇文章,并考虑其中最流行的工具,以确定何时何地使用它们以及解决什么任务。 我将尝试用手指解释如何使用这些工具。 如果该工具在此列表中,那么作为Python专家,您至少需要了解它的存在。 我将仅讨论可应用于任何项目或工作流的那些工具,并且在开始新项目时应记住它们。 但是,这并不意味着您应该使用每个项目中提供的所有工具。 不必使用工具来使项目过载,在某些情况下这会使项目的支持复杂化。

基本工具


设定工具


Setuptools是在Python中创建软件包的标准方法。 他在任何地方工作都很好。

原因 :从源代码创建egg,zip或wheel文件,为项目定义元数据,联合进行结构化和标准化的代码工作。
使用时 :始终在编写应在其他人的计算机上运行的代码时使用
替代选择 :诗歌,弗里特

虚拟环境


Virtualenv是一个虚拟环境管理器。 此类沙箱是带有一组特定的预安装软件包的独立python。 使用virtualenv意味着默认情况下不需要在python系统上安装软件包。

原因 :分离依赖项,通过一个系统支持不同版本的python,轻松重定位依赖项。
使用时 :您需要编写代码,为此,您需要一个与默认python系统版本不同的python版本。
替代方案 :Docker或类似的东西。

点子


Pip是python中最常见的软件包管理器。 它允许您在虚拟环境或Python系统中安装本地或远程软件包。

用途:安装和删除软件包,跟踪您使用的软件包的版本。
使用时 :始终。
其他选择 :诗歌,康达

包创建和分发


仔细看一下,python.org有一个单独的页面: Packaging.python.org

发行版


distutils是setuptools的先驱。 后者积极使用distutils功能,因此通常需要与此工具进行交互。 Distutils并不完全是您应该在军械库中使用的工具,但是您应该知道它如何适应全局。

皮皮


Pypi或Python软件包索引是一个大型存储库,其中包含您所有喜欢的Python模块。 例如,同一点从此处获取软件包构建。

原因 :发布代码。
使用时间 :当您有一个要显示给社区的软件包时。

y客


Pypiserver是Pypi使用的Package Index API的实现之一。 例如,您可以为整个公司创建自己的存储库,并在不进行公开发布的情况下发布包。

原因 :在组织内创建自己的存储库。
使用时间 :当您的代码不需要公开,但需要对其进行完全控制时。
替代方案 :仓库(由Pypi使用),djangopypi

诗词


诗歌是一种替代的软件包管理系统,可以代替setuptools,pip和其他基于其构建的工具。 试图完全重新定义软件包系统在Python中的工作方式。 迄今为止,诗歌具有许多正面评价,但不是最常用的工具。

原因 :处理和分发软件包,管理依赖项,防止解决依赖项问题。
什么时候使用 :当您计划一个新项目时,您不用担心使用高度专业化的工具。
替代方案 :Pipenv

Pipenv


Pipenv和Poetry一样,是一种用于构建依赖关系和以更合理的方式配置Python项目的工具。 借助Pipfile,它可以管理项目的依赖关系,并确保一致性和易用性。

原因 :处理和分发程序包,依赖性管理。
使用时 :您需要像诗歌这样的工具,它可以减少问题的产生。
替代方法 :诗歌。

该文件


狮身人面像


Sphinx是用于创建文档的工具。 它最初是为处理Python文档而创建的,但现在已成为通用工具。 这是Python项目最常用的选项。

原因 :使用来自reStructuredText来源的标记语言创建PDF或HTML文档。
使用时间 :当您的项目,API或代码需要外部文档时。
替代品 :Docutils,Doxygen

自动文件


autodoc是Sphinx的基本扩展,它允许您从Python源代码创建带有每个类,函数,模块等签名的reStructuredText文件。

原因 :记录您的代码或API。
何时使用 :实际上,每次您都使用Sphinx。
替代方案 :自动摘要

测试中


py.test


py.test-在我看来,是使用Python测试的最佳软件包。 它具有许多功能,尽管并非所有功能都可以正确打开,因此将需要一些时间来搜索py.test提供的所有功能。

原因 :测试您的代码。
使用时间 :总是在您懒得手动测试时。
替代方案 :单元测试,鼻子

假说


假设是用于测试各个属性的工具。 简而言之,它会根据您的规范生成随机的测试脚本,直到找到测试失败的情况。 在开始使用此工具之前,请花一些时间来学习这些原理。

原因 :代码测试,尤其是数据处理。
何时使用 :当您需要使用各种输入值(数字,字符串,结构化数据)测试非平凡逻辑时。

毒物


tox是用于测试的虚拟环境管理器。 这意味着您可以对其进行配置,以在干净的,可自定义的虚拟环境中运行测试,以确保您的代码可以在各种条件下运行。

原因 :针对应在各种条件和环境下运行的代码。 对CI也有用。
何时使用 :当需要不同版本的Python支持代码时,请在不同的环境和不同的操作系统上运行。
替代方案 :bash脚本,CI管道

其他工具


pyenv


pyenv是python版本管理器。 目的是简化使用多个版本时开发人员的本地工作流程。

原因 :使用不同版本的Python启动各种项目。
使用时 :您需要使用 Python的全局版本,并且有很多。
替代方案 :手动管理,virtualenv,诗歌,Pipenv

脚手架


PyScaffold是一种用于以标准化方式初始化项目结构并提供上面列出的某些工具的工具,而无需手动配置它们。 非常灵活

原因 :要加载项目,请使用相同的工具和结构来处理多个项目。
何时使用 :始终使用(如果您熟悉此工具,但是在着急的时候不要尝试第一次使用它)
替代方案 :python-project-template,Cookiecutter

薄片8


flake8是Python最受欢迎的linters之一。 它运行各种脚本来验证您的代码是否符合Python样式指南( PEP-8 )的要求。

用途:检查项目的写作风格。
使用时 :每次您的项目应被某人或您阅读。
替代品 :pylint

黑色的


黑色自动格式化代码。 这意味着,Black不仅会检查您的代码是否符合标准,还将独立更改代码以使其符合要求。

原因 :自动代码格式化。
使用时间 :拒绝手动管理代码没有问题时。
替代方案 :autopep8,yapf

仅此而已。 等待您的评论;-)。

Source: https://habr.com/ru/post/zh-CN456624/


All Articles