介绍
本教程的目标是描述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
, virtualenvwrapper
到pipenv
,和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