可能刚开始学习Python时,有人跟你说可以将源文件所在的文件夹添加到 PYTHONPATH环境变量中,然后可以从其他位置导入此代码。在大多数情况下,这个人常常忘记补充这是一个非常糟糕的主意。有些人在互联网上发现了这一点,其他人却要看自己付出代价后才意识到。还有太多人(特别是非程序员)真的相信除此外没有别的办法了。

这篇文章适用于所有类型的 Python 学习者,因为即使你知道存在替代方案,也难以掌握。 Python的工具链令人困惑,因为有许多软件是相互依赖的,并且它们的关注点也有很多重叠。很难理解它们在 Python 编程体系中的定位。

出于这个原因,我决定列出最重要的工具,它们的使用场景和原因,以及它们解决了什么问题。我将尝试用简单的词语解释你应该如何使用这些工具。如果我在本文中列出了某个工具,这意味着,作为一个Python程序员,你应该至少知道它的存在。我将仅列出可应用于任何项目或工作流的工具,每次启动新项目时都应考虑这些工具。这并不意味着您总是必须在每个项目中使用它们。在某些情况下,太多的工具很容易成为一种负担,并且难以维护。

Setuptools

Setuptools是在Python中创建包的标准方法。它无处不在,有效并发挥了应有的作用。

  • 用途:从源代码构建egg,zip或wheel文件,为项目定义元数据,以结构化和标准化的方式共享代码

  • 场景:基本上每次你想编写应该运行在其他机器上的代码时

  • 替代品:Poetry, Flit

virtualenv

Virtualenv是一个虚拟环境管理器。隔离的虚拟环境可以理解为“安装了独立包的Python版本。使用virtualenv意味着不需要(并且不应该)使用系统默认的python版本来安装软件包。

  • 用途:保持依赖关系分离,在同一系统中支持多个python版本,轻松移动依赖关系

  • 场景:想写代码时,想使用不同于默认版的Python版本时

  • 替代品:Docker或同等产品

Pip

Pip是Python最常用的包管理工具。它允许您获取本地或远程包,并将它们安装在虚拟环境或系统的Python中。

  • 用途:安装和卸载软件包,跟踪正在使用的软件包的版本

  • 场景:任何时候都可以使用

  • 替代品:诗歌,康达

distutils

distutils是setuptools的先驱。后者大量使用来自distutils的功能,因此很多情况下都会用到该工具。这不是你会直接选择使用的工具,但你应该知道它生态中的作用。

Pypi

Pypi是Python Package Index的简称。它存储了所有你可能会用到的Python库。Pip就是从这里获取构建好的包。

  • 用途:发布代码

  • 场景:要公开发布包时

Pypiserver

Pypiserver是Pypi使用的Package Index API的一个实现。您可以用它来配置自己的代码库,例如为整个公司设置并在那里发布包,而不是公开发布。

  • 用途:组织内部共享代码

  • 场景:代码不应公开,希望拥有控制权

  • 替代方案:Warehouse(Pypi使用的库),djangopypi

Poetry

Poetry是也是一个包管理系统,可以取代setuptools,pip和一些建立在它们之上的工具。这个工具,是对Python打包系统的一次全面重构尝试。到目前为止,它得到了一些支持和很多积极的反馈,但它还远远没有成为主流选择。

  • 用途:处理和分发包,管理依赖项

  • 场景有一个新项目而且不怕使用相对小众的工具

  • 替代方案:Pipenv

Pipenv

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

  • 用途:处理和分发包,管理依赖关系

  • 场景:想尝试类似 Poetry 的工具,但希望引起更少的问题

  • 替代方案:Poetry

Sphinx

Sphinx是构建文档的工具。它最初诞生的目的,是处理Python的文档,但现在已经成为了一个通用文档工具。它仍然是Python项目最常见的文档工具。

  • 用途:根据reStructuredText文件,生成PDF或HTML文档

  • 场景:希望为项目提供外部文档,API和代码

  • 替代方案:Docutils,Doxygen

autodoc

autodoc是Sphinx的基本扩展,允许从Python源代码中生成restructuredText文件,其中包含每个类,函数,模块等的条目。

  • 用途:记录代码或API

  • 场景:可能每次使用Sphinx进行项目时

  • 替代方案:autosummary

py.test

py.test在我看来是Python中最好的测试套件。它具有很多功能,但并非所有功能都得到充分的推广,因此需要一些时间来发现该软件支持的丰富可能性

  • 用途:测试代码

  • 场景:什么场景下都需要用的,别犯懒

  • 替代方案:unittest,nose

Hypothesis

Hypothesis是基于属性的测试工具。简单地说,它会根据你提供的规范生成随机测试场景,直到找到导致测试失败的情况。在开始使用此工具之前,请花点时间了解背后的原理。

  • 用途:测试代码,尤其是数据处理

  • 场景:需要使用各种输入数(数字,字符串,结构化数据)测试复杂逻辑时

tox

tox本质上是测试工作中的虚拟环境管理器。这意味着配置测试,让其在一系列干净,可自定义的虚拟环境中运行,以确保代码能够在不同条件下工作。所有这些都不需要任何手动处理。

  • 用途:需要在不同条件和环境中运行的代码。对CI也很有用。

  • 场景:代码需要支持不同的Python版本,在不同的环境和不同的操作系统中运行

  • 替代方案:bash scrips,CI pipeline

pyenv

pyenv是一个python版本管理器。它旨在简化开发人员处理多个版本时的本地工作流程。

  • 用途:运行支持不同python版本的项目

  • 场景:需要使用系统python版本,但是却安装了很多种时

  • 替代品:手动管理,virtualenv,Poetry,Pipenv

PyScaffold

PyScaffold是一种以标准化方式初始化项目结构的工具,并提供我们之前列出的一些工具,而无需手动配置它们。它支持高度定制。

  • 用途:初始化项目;有多个项目,需要统一的工具和结构

  • 场景:各种场景都可以使用(只要你熟悉工具,不要在紧急情况下去尝试新工具)

  • 替代方案:python-project-template,Cookiecutter

flake8

flake8是Python最常用的风格检查工具之一。它运行不同的脚本来验证代码是否符合Python的风格指南要求(PEP-8)。

  • 用途:验证并保证项目中良好的代码风格

  • 当每次您的项目需要被某人阅读时,包括您自己

  • 替代方案:pylint

Black

Black是一个自动代码格式化工具。这意味着Black不会仅仅检查您的代码是否合规,还会实际修改它以使其符合规范。

  • 用途:自动格式化代码

  • 场景:愿意放弃手动控制代码风格

  • 替代方案:autopep8,yapf

Python 开发工具链全解相关推荐

  1. python开发工具下所有软件都打不开_Python 开发工具链全解

    可能刚开始学习Python时,有人跟你说可以将源文件所在的文件夹添加到 PYTHONPATH环境变量中,然后可以从其他位置导入此代码.在大多数情况下,这个人常常忘记补充这是一个非常糟糕的主意.有些人在 ...

  2. python开发工具

    工欲善其事必先利其器-简单几步打造顺手的python开发工具(windows,Linux多版本) 初学一门语言,一般来说第一道门槛是开发工具的选择,以及配置,用记事本写代码写写helloworld尚堪 ...

  3. 使用python用什么软件-python开发工具有哪些(初学python用什么软件)

    python开发工具有哪些 一.jupyternotebookIDE简介-五星推荐 jupyternotebook是python学习与开发的一款简介的IDE,是一款Web应用程序,便于创建和编写文档等 ...

  4. python编程用什么软件-python开发工具有哪些(初学python用什么软件)

    python开发工具有哪些 一.jupyternotebookIDE简介-五星推荐 jupyternotebook是python学习与开发的一款简介的IDE,是一款Web应用程序,便于创建和编写文档等 ...

  5. Python 开发工具推荐,以及下载、安装和设置

    您的"关注"和"点赞",是信任,是认可,是支持,是动力- 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 本文首发在IT羊 ...

  6. Python培训教程分享:10款超好用的Python开发工具

    学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...

  7. python开发工具排名-7款公认比较出色的Python IDE,你值得拥有!

    Python作为一款比较"简洁"的编程语言,它拥有很多性价比高的性能,造就了它现在比较火热的局面,很多人都来学习Python.Python 的学习过程少不了 IDE 或者代码编辑器 ...

  8. python视频课程推荐-听说程序员都在用,5款Python开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  9. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

最新文章

  1. 开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素
  2. AJAX初探,XMLHttpRequest介绍
  3. SQL 判断表是否存在 数据表不存在是致命错误
  4. Quick BI 功能“炸弹”:即席分析、模板市场、企业微信免密登录等强势功能
  5. html5 td中的5它空隙--待解决
  6. 解决 mysql>com.mysql.jdbc.PacketTooBigException: Packet for query is too large (12073681 > 4194304)
  7. 012——数组(十二) 数组range array_count_values array_pad array_product
  8. python怎么用字符画_用Python把图片变成字符画
  9. 浙江独立学院计算机专业排名2015,2014-2015年中国独立学院排名
  10. 什么是Csrss.exe进程?此进程有何作用?
  11. 土方回填施工方案范本_联投土方回填施工方案样本
  12. audit linux mysql_MySQL审计工具Audit Plugin安装使用
  13. 计算机考研360能去哪里,计算机专业考研,有什么好的211院校推荐?
  14. java xml 查询_java对xml进行查询操作代码
  15. 知道了蚂蚁森林这个“秘密”,我坐不住了!!
  16. mysql安装出现应用程序无法正常启动(oxc000007b)的解决方案
  17. UltraEdit 25以后的版本 绕过试用期
  18. 讯飞智能录音笔SR302为职场人带来办公新体验
  19. 如何设置ajax监控,监控使用AJAX的XMLHttpRequest
  20. JVM运行时内存结构学习

热门文章

  1. Kafka学习-复制
  2. 【前端】.easyUI.c#
  3. 首次吃了一颗带奶糖味的消炎药,不知道管用不
  4. 亚马逊向土耳其企业启动“全球开店”计划,要和中国卖家抢夺欧洲市场
  5. python数据结构是建好的吗_Python数据结构创建的具体应用方案详细描述
  6. 【MM模块】Invoice Verification in the Background 后台发票校验
  7. 供应商的余额,从哪个表里取
  8. 【CIO说】转型SaaS,为什么Oracle、SAP的第一选择是人力资源软件
  9. 不同服务器之间进行传输
  10. SAP:HANA为高性能数据分析保驾护航