2021年新项目的Python最佳实践

本文详细介绍了Python开发的最佳实践,包括使用pyenv管理Python版本、使用诗歌进行依赖管理、用pytest进行测试、集成VS代码以及使用Flake8和Black进行代码质量和格式检查。还介绍了Mypy静态类型检查器和isort导入排序工具,为2021年的新Python项目提供了全面的指南。
摘要由CSDN通过智能技术生成

介绍

本教程的目标是描述Python开发生态系统。对于从另一种编程语言来使用Python的人来说,这是很有帮助的。

他们说你应该坚持算法和数据结构,你可以在几周内学习一门新的语言,这只是一种新的语法。我完全同意算法和数据结构是非常重要的,但是对于语言来说,它不仅仅是语法。它周围有一整套工具和最佳实践的基础设施。对于来自不同背景的人来说,跟上所有这些东西可能是势不可挡的,特别是考虑到有时信息应该在不同的地方找到。

这是我非常固执己见的尝试,试图编译一些关于为本地开发建立一个新的Python环境的最佳实践。还有一些关于将这些工具与VisualStudio代码集成的建议,但是,没有必要使用这个特定的编辑器。我将更新此页面,因为底层工具有一些更改。我还计划自己使用它作为启动新Python项目的样板。本教程很长,因为我详细解释了这些工具的用途和用法,但是,最终的结果是快速设置新的项目环境,只需几分钟就可以实现。西西。

如何使用pyenv管理Python版本?

为什么要用pyenv?

许多教程的开头都是一样的:Python.org并为您下载最新版本的语言平台。别听他们的。还有更好的办法。这就是为什么。

Python有不同的版本,在处理不同的项目时,需要在这些版本之间切换。

您的操作系统可能已经有了一些Python版本。对于Mac,它是2.7,一些Linux发行版已经切换到版本3。更多的是,还有另一个Python作为Anaconda包的一部分安装。底线是:在键入python在命令行。

在某种程度上,您的机器上会出现一堆不同的Python可执行文件,您需要某种方法来管理它。要是有这样的工具就好了。

而且确实有。它叫pyenv - Https://github.com/pyenv/pyenv

如何安装pyenv?

安装Mac:

brew update
brew install pyenv

对于Linux,您最好使用pyenv installer - Https://github.com/pyenv/pyenv-installer :

curl https://pyenv.run | bash

对于Windows,有pyenv for Windows - Https://github.com/pyenv-win/pyenv-win .

但是您最好还是使用WindowsSubSystemforLinux(WSL),然后以Linux的方式安装它。

如何使用pyenv?

首先,我们可以看到安装在计算机上的所有Python可执行文件(至少是那些)的列表。pyenv能够找到):

pyenv versions
* system (set by /Users/alex/.python-version)

上面显示了我的机器的输出。这里的星号表示Python的当前活动版本。所以如果我跑

python -V
Python 2.7.16

我们可以看到MacOS仍然作为系统可执行文件随Python2.7一起提供。

现在让我们看看所有可用的Python版本:

pyenv install --list

这将输出一个不同Python版本的长列表。你会惊讶于那里有多少毕顿人。CPython实现默认为以下版本3.8.5,其他的则有前缀,如pypy3.6-7.3.1 .

如果只想看到CPython版本,可以运行如下内容:

pyenv install --list | grep " 3\."

如果你用pyenv有相当一段时间了,并且列表中没有新版本,您应该更新pyenv本身:

brew upgrade pyenv

pyenv update

带有后缀的版本-dev目前正在积极发展。

让我们在撰写本文时安装最新的、最稳定的Python版本

pyenv install 3.8.5

这将下载源代码并在计算机上编译它:

python-build: use <a href="/cdn-cgi/l/email-protection" data-cfemail="dfb0afbab1acacb39feef1ee">[email protected]</a> from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.5.tar.xz...
-> https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
Installing Python-3.8.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.8.5 to /Users/alex/.pyenv/versions/3.8.5

如果我们跑pyenv versions同样,我们在列表中看到了我们的新版本,但它仍然不活跃

* system (set by /Users/alex/.python-version)
  3.8.5

我们可以用python -V。仍然

Python 2.7.16

pyenv允许我们将Python的任何版本设置为全局Python解释器,但我们不会这样做。可以有一些脚本或其他程序依赖于默认的解释器,所以我们不想搞砸这件事。相反,我们将设置每个项目的Python。让我们在下一节中创建一个项目。

替代工具:asdf : Https://asdf-vm.com/

Python与诗歌的依赖管理

为什么要用诗歌?

默认情况下,Python包是与pip install。实际上,没有人这样使用它。它将所有的依赖项安装到Python解释器的一个版本中,这会扰乱依赖关系。

安装每个项目的依赖关系是一个很好的实践。因此,每个项目只包含它所需的依赖项,仅此而已。这也防止了不同项目所需的不同包的版本之间的冲突。

为了解决这一问题,提出了虚拟环境的概念。因此,每个项目都有自己的虚拟环境,具有固定的Python版本和特定于该项目的固定依赖关系。

虚拟环境是从venv , virtualenv , virtualenvwrapperpipenv,和poetry . pipenv很受欢迎,很长一段时间以来都是个不错的选择。关于pipenv这篇博客文章对此做了大量报道:皮潘夫:承诺很多,却很少。克里斯·沃里克。最大的担忧之一是延迟发布--自2018年以来没有新版本发布。虽然,2020年中期pipenv随着几个新的更新,许多开发人员已经下定决心了。诗歌获得了一些吸引力,此外,它还声称更好在以下情况下解析依赖项pipenv失败了。此外,诗歌可以帮助开源项目,因为它有助于发布包。

诗歌官方网站:Https://python-poetry.org/

如何安装诗歌?

所以,让我们开始吧。建议在系统级别上安装诗歌。

对于MacOS、Linux和WSL:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

如果在Windows中使用Powershell,则在官方网站但我个人建议只使用WSL。

若要为当前shell会话应用更改,请运行

source $HOME/.poetry/env

您可以将其添加到自动运行的shell脚本中,如.bashrc.zshrc如果Poetry不会出现在新的shell会话中:

export PATH="$HOME/.poetry/bin:$PATH"

还可以为shell启用选项卡完成。描述了这一过程。这里 .

如何用诗歌创造新项目?

诗歌为您创建一个文件夹结构,因此请确保将当前目录更改为新项目的父目录,然后运行:

poetry new my-project

哪里my-project是项目的名称。将项目名称改为。

现在,让我们看看Poetry为我们创建:

cd my-project; ls

如何设置每个项目的Python版本?

我们还在使用旧的Python2.7,记得吗?对于我们的新项目,我们希望使用Python的现代版本,所以我们回到pyenv工具。由于我们仍然在项目目录中,请在本地为该目录设置Python版本:

pyenv local 3.8.5

如果我们跑pyenv versions现在,我们可以看到3.8.5被标记为星号,因此它对这个目录是活动的。请注意,在此目录之外,Python版本与以前相同。

system
* 3.8.5 (set by /Users/alex/iCloud/dev/projects/my-project/.python-version)

我们可以再查一遍python -V .

Python 3.8.5

现在,我们让“诗歌”摘取当前的Python版本:

poetry env use python
Creating virtualenv my-project-PSaGJAu6-py3.8 in /Users/alex/Library/Caches/pypoetry/virtualenvs
Using virtualenv: /Users/alex/Library/Caches/pypoetry/virtualenvs/my-project-PSaGJAu6-py3.8

作为设置Python版本的最后一步,让我们更新pyproject.toml . [tool.poetry.dependencies]应该反映支持的Python版本为3.8或更高版本:

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["Alex"]

[tool.poetry.dependencies]
python = "^3.8"

[tool.poetry.dev-dependencies]
pytest = "^5.2"

[build-system]
requires = ["poetry-core>=1.0.0a5"]
build-backend = "poetry.core.masonry.api"

如何使用诗歌?

在下一步中,您可能希望安装您的第一个依赖项:某个库或框架,您计划在这些库或框架的基础上构建项目。例如:

poetry add aiohttp

哪里aiohttp是我们安装的框架。

如果您想要为本地开发安装它的依赖项,那么只需运行

poetry install

若要将所有依赖项切换到最新版本,请执行以下操作:

poetry update

如何使用诗歌与VS代码?

VS代码不会自动检测诗歌。好消息是,有一个简单的方法可以让VS代码检测到诗歌创造的虚拟环境。

首先,我们必须激活虚拟环境:

poetry shell
Spawning shell within /Users/alex/Library/Caches/pypoetry/virtualenvs/my-project-PSaGJAu6-py3.8
➜  my-project . /Users/alex/Library/Caches/pypoetry/virtualenvs/my-project-PSaGJAu6-py3.8/bin/activate
(my-project-PSaGJAu6-p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值