文章插图
在开始一个新的Python项目时,很容易不做规划直接进入编码环节 。花费少量时间,用最好的工具设置项目,将节省大量时间并带来更快乐的编码体验 。
在理想的世界中,所有开发人员使用的依赖库都是相同的,代码将被完美地格式化,禁止常见错误,并且测试将涵盖所有内容 。此外,每次提交代码时都会确保符合这些要求 。
在本文中,我将介绍如何设置一个这样的理想项目 。你可以跟随我的步骤操作,也可以直接开始安装pipx和pipenv,然后生成新项目 。
让我们创建一个新的项目目录:
mkdir best_practicescd best_practicesPython命令行工具与pipxPipx是一个方便的实用程序,允许快速安装python命令行工具 。我们将用它来安装 pipenv 和 cookiecutter。
python3 -m pip install --user pipxpython3 -m pipx ensurepath使用 pipenv 进行依赖管理Pipenv自动为您的项目创建和管理virtualenv,以及在安装/卸载软件包时从Pipfile添加/删除软件包 。它还生成了非常重要的Pipfile.lock文件,用于生成确定性构建 。
知道你和你的同事正在使用相同的库版本,可以极大提升信心 。Pipenv 可以实现这个点,因此在过去一年多里得到了大量开发者的青睐
pipx install pipenv使用 black 和 isort 进行代码格式化Black是代码格式化工具:
Black是不妥协的Python代码格式化程序 。通过使用它,意味着您同意放弃对手动格式化细节的控制 。作为回报,Black 为你提供速度和确定性,并且无需处理 pycodestyle 的繁琐提示 。你将有更多的时间,来处理更重要的事情 。
无论是什么项目,Black 格式化后的代码看起来都是一样的 。习惯之后,你不会再注意到格式的问题,可以专注于内容 。
Black产生的代码差异最小,可以加速代码审查 。
isort则用来处理 import 的排序:
isort是可以按字母顺序对 import 进行排序,并自动分成多个部分 。
让我们使用pipenv安装它们为开发依赖库,这样就不会让部署版本变得更复杂:
pipenv install black isort --devBlack 和 isort 的默认选项之间有冲突,因此我们将覆盖 isort 的选项配置,使用 Black 的配置 。创建一个 setup.cfg文件并添加此配置:
[isort]multi_line_output=3include_trailing_comma=Trueforce_grid_wrap=0use_parentheses=Trueline_length=88我们可以这样运行这些工具:
pipenv run blackpipenv run isort用flake8强化风格Flake8确保我们的代码遵循PEP8的约定 。使用pipenv安装:
pipenv install flake8 --dev就像isort一样,它需要一些配置才能与 Black 配合使用 。将此配置添加到 setup.cfg:
[flake8]ignore = E203,E266,E501,W503max-line-length = 88max-complexity = 18select = B,C,E,F,W,T4现在我们可以使用 pipenv run flake8运行flake8 。
使用 mypy 检查静态类型Mypy是Python的一个可选静态类型检查器,旨在结合动态(或“鸭子”)类型和静态类型的好处 。Mypy将Python的表现力和便利性与强大的类型系统和编译时类型检查相结合 。Mypy对标准Python程序进行类型检查,使用 Python VM 运行 mypy 基本没有运行时的开销 。
在Python中使用类型需要慢慢习惯,但好处是巨大的 。mypy 官网这样写道:
静态类型可以使程序更容易理解和维护静态类型可以帮助您更早地发现错误,并减少测试和调试静态类型可以帮助您在代码投入生产之前找到难以发现的错误 pipenv install mypy --dev默认情况下,Mypy将递归检查所有类型注释的导入,这会导致库不包含这些注释时出错 。我们需要将mypy配置为仅在我们的代码上运行,并忽略没有类型注释的导入的任何错误 。我们假设代码存在于以下配置的 best_practices包中 。将如下配置添加到 setup.cfg:
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 常用的健身器材你知道多少个
- 简单地图绘制 如何画地图
- 程序员编程培训:程序员工资到底有多高?国内哪个城市挣得多?
- 程序员编程培训:程序员的编程人生
- 程序员编程培训:程序员应该学习的5种编程语言
- 程序员编程培训:好程序员ava培训分享void的用法和意义
- Pound是重量还是价值?盘点常用的重量和价值单位
- 常用的2.5平方铜线最大电流
- 常用作新娘的手捧花,爱你一生一世的粉色马蹄莲,用水果网就可做
- 3阶魔方公式 初学者 初学者三阶魔方常用公式