网站做接口,手机兼职赚钱正规平台,定制开发小程序,潍坊网站建设电话可能刚开始学习Python时#xff0c;有人跟你说可以将源文件所在的文件夹添加到 PYTHONPATH环境变量中#xff0c;然后可以从其他位置导入此代码。在大多数情况下#xff0c;这个人常常忘记补充这是一个非常糟糕的主意。有些人在互联网上发现了这一点#xff0c;其他人却要看…可能刚开始学习Python时有人跟你说可以将源文件所在的文件夹添加到 PYTHONPATH环境变量中然后可以从其他位置导入此代码。在大多数情况下这个人常常忘记补充这是一个非常糟糕的主意。有些人在互联网上发现了这一点其他人却要看自己付出代价后才意识到。还有太多人特别是非程序员真的相信除此外没有别的办法了。
这篇文章适用于所有类型的 Python 学习者因为即使你知道存在替代方案也难以掌握。 Python的工具链令人困惑因为有许多软件是相互依赖的并且它们的关注点也有很多重叠。很难理解它们在 Python 编程体系中的定位。
出于这个原因我决定列出最重要的工具它们的使用场景和原因以及它们解决了什么问题。我将尝试用简单的词语解释你应该如何使用这些工具。如果我在本文中列出了某个工具这意味着作为一个Python程序员你应该至少知道它的存在。我将仅列出可应用于任何项目或工作流的工具每次启动新项目时都应考虑这些工具。这并不意味着您总是必须在每个项目中使用它们。在某些情况下太多的工具很容易成为一种负担并且难以维护。Setuptools
Setuptools是在Python中创建包的标准方法。它无处不在有效并发挥了应有的作用。
用途从源代码构建eggzip或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的一个实现。您可以用它来配置自己的代码库例如为整个公司设置并在那里发布包而不是公开发布。
用途组织内部共享代码
场景代码不应公开希望拥有控制权
替代方案WarehousePypi使用的库djangopypi
Poetry
Poetry是也是一个包管理系统可以取代setuptoolspip和一些建立在它们之上的工具。这个工具是对Python打包系统的一次全面重构尝试。到目前为止它得到了一些支持和很多积极的反馈但它还远远没有成为主流选择。
用途处理和分发包管理依赖项
场景有一个新项目而且不怕使用相对小众的工具
替代方案Pipenv
Pipenv
Pipenv和 Poetry 一样是一种以更加理智的方式构建Python项目依赖关系和配置的工具。它通过 Pipfile管理项目的依赖关系并确保一致性和易用性。
用途处理和分发包管理依赖关系
场景想尝试类似 Poetry 的工具但希望引起更少的问题
替代方案PoetrySphinx
Sphinx是构建文档的工具。它最初诞生的目的是处理Python的文档但现在已经成为了一个通用文档工具。它仍然是Python项目最常见的文档工具。
用途根据reStructuredText文件生成PDF或HTML文档
场景希望为项目提供外部文档API和代码
替代方案DocutilsDoxygen
autodoc
autodoc是Sphinx的基本扩展允许从Python源代码中生成restructuredText文件其中包含每个类函数模块等的条目。
用途记录代码或API
场景可能每次使用Sphinx进行项目时
替代方案autosummary
py.test
py.test在我看来是Python中最好的测试套件。它具有很多功能但并非所有功能都得到充分的推广因此需要一些时间来发现该软件支持的丰富可能性
用途测试代码
场景什么场景下都需要用的别犯懒
替代方案unittestnose
Hypothesis
Hypothesis是基于属性的测试工具。简单地说它会根据你提供的规范生成随机测试场景直到找到导致测试失败的情况。在开始使用此工具之前请花点时间了解背后的原理。
用途测试代码尤其是数据处理
场景需要使用各种输入数数字字符串结构化数据测试复杂逻辑时
tox
tox本质上是测试工作中的虚拟环境管理器。这意味着配置测试让其在一系列干净可自定义的虚拟环境中运行以确保代码能够在不同条件下工作。所有这些都不需要任何手动处理。
用途需要在不同条件和环境中运行的代码。对CI也很有用。
场景代码需要支持不同的Python版本在不同的环境和不同的操作系统中运行
替代方案bash scripsCI pipeline
pyenv
pyenv是一个python版本管理器。它旨在简化开发人员处理多个版本时的本地工作流程。
用途运行支持不同python版本的项目
场景需要使用系统python版本但是却安装了很多种时
替代品手动管理virtualenvPoetryPipenv
PyScaffold
PyScaffold是一种以标准化方式初始化项目结构的工具并提供我们之前列出的一些工具而无需手动配置它们。它支持高度定制。
用途初始化项目有多个项目需要统一的工具和结构
场景各种场景都可以使用只要你熟悉工具不要在紧急情况下去尝试新工具
替代方案python-project-templateCookiecutter
flake8
flake8是Python最常用的风格检查工具之一。它运行不同的脚本来验证代码是否符合Python的风格指南要求PEP-8。
用途验证并保证项目中良好的代码风格
当每次您的项目需要被某人阅读时包括您自己
替代方案pylint
Black
Black是一个自动代码格式化工具。这意味着Black不会仅仅检查您的代码是否合规还会实际修改它以使其符合规范。
用途自动格式化代码
场景愿意放弃手动控制代码风格
替代方案autopep8yapf