poetry python
“应该有一种明显的方法,最好只有一种。”
尽管这句话来自蒂姆·彼得斯(Tim Peters)的《 Python的禅宗》 ,但Python并不总是遵循该原则。 Python未能达到这一理想的领域之一是项目管理。 长期以来,管理Python项目涉及各种工具和方法。 但是,事实上的标准可能正在兴起- 诗歌 。
Poetry将Python和Go和Rust长期以来所喜欢的多合一项目管理工具带到了Python中。 诗歌允许项目对特定的程序包版本具有确定性的依赖性,因此它们可以在不同的位置一致地构建。 诗歌还使构建,打包和发布项目和库到PyPI变得更加容易,因此其他人可以共享Python成果。
在本文中,我们将逐步介绍将Poetry用于Python开发项目的方法-如何设置Poetry,如何使用Poetry来配置项目的依赖项和虚拟环境 ,以及如何避免Poetry独特之处带来的一些陷阱。做事的方式。
用Python设置诗歌
从安装开始,诗歌就故意不同于其他Python依赖项和项目管理工具。 Poetry使用自定义安装程序 ,而不是使用pip
。 安装程序会将Poetry应用程序添加到用户的配置文件目录中,因此它可以与当前或将来在系统中的任何Python安装一起使用。
尽管您可以使用pip install poetry
在特定的Python安装中安装Poetry,但不建议这样做,因为a)它可能与其他系统文件冲突,并且b)难以在不同版本的Python和不同的Python中一致地使用Poetry。虚拟环境。
创建一个诗歌管理的Python项目
一旦安装了Poetry,就可以通过输入poetry new <project_name>
来创建一个新的Poetry管理的项目目录。 此命令将创建一个名为<project_name>
的子目录,并在其中填充一个项目支架。
诗歌项目支架包括以下内容:
-
pyproject.toml
—项目的定义文件。 诗歌为您管理这个定义。 如果您知道自己在做什么,则可以直接编辑此文件,但是大多数时候不需要。 -
README.rst
— ReStructuredText格式的空README文件,该格式用于Python文档。 (没有规则说明您的文档必须使用.rst
格式;对于更简单的情况,可以使用Markdown。) -
tests
—具有用于单元测试的脚手架的子目录。 如果您不习惯为新项目编写测试 ,则应该这样做! - 最后,一个包含项目名称的子目录,其中包含项目的代码。
[ 同样在InfoWorld上:8个出色的Python库,用于自然语言处理 ]
管理诗歌中的Python虚拟环境
一个新的Poetry项目可能首先想要的是Python虚拟环境 。 从形式上讲,诗歌具有处理虚拟环境的独特方法。 Poetry并未将虚拟环境放置在项目目录中,而是将其放置在根据操作系统而有所不同的集中式缓存目录中:
- Unix:
~/.cache/pypoetry/virtualenvs
- MacOS:
~/Library/Caches/pypoetry/virtualenvs
- Windows:
C:\Users\<username>\AppData\Local\pypoetry\Cache\virtualenvs or %LOCALAPPDATA%\pypoetry\Cache\virtualenvs
Poetry的方法的优势在于,只要有意义,就可以跨项目共享虚拟环境。 但这确实需要改变您的工作习惯。
要在Poetry中设置虚拟环境,请转到该项目的目录,然后输入poetry env use python
。 诗歌将创建一个新的虚拟环境,将其存储在缓存目录中,并为该虚拟环境显示一个随机生成的名称(请注意以备后用)。
为了增加便利,Poetry还将安装项目的pyproject.toml
文件中列出的所有依赖pyproject.toml
。 如果您想从其他地方复制Poetry项目并将其设置在系统上,则将发现此超级有用。
请注意,如果您在已经具有诗歌分配的虚拟环境的项目目录中运行poetry env use python
,则诗歌将在该CLI会话的上下文中激活该虚拟环境。
[ 同样在InfoWorld上:如何在Python中使用asyncio ]
接下来是困难的部分,这就是使您诗歌管理的虚拟环境与IDE一起使用。 例如,Visual Studio Code会自动检测项目目录中是否存在虚拟环境,但尚未(尚未)检测使用Poetry管理的虚拟环境 。 (近期)解决方案是在项目的settings.json
文件中添加一行,以指示Poetry保留其虚拟环境的位置:
"python.venvPath": "C:\\Users\\username\\AppData\\Local\\pypoetry\\Cache\\virtualenvs"
进行此更改后,请确保重新启动Visual Studio Code。
如果您不希望Poetry管理您的虚拟环境,则可以使用以下命令禁用该行为:
poetry config virtualenvs.create false
将依赖项添加到Poetry中的Python项目中
诗歌跟踪两种项目依赖关系:项目运行所需的软件包(生产依赖关系)和仅在开发过程中需要的软件包(开发依赖关系)。 生产相关性将包括您用于应用程序功能的任何第三方库; 开发依赖将包括black
, mypy
或docutils
等编码工具。
- 要将生产依赖项添加到项目中,请使用
poetry add <dependency_name>
。 - 要添加开发依赖关系,请使用
poetry add <dependency_name> -D
。
请注意,在使用命令poetry remove <dependency_name>
删除开发依赖项(即,使用-D
开关添加的开发依赖项)时,也要使用-D开关。
请注意, poetry add
命令的工作原理与pip install
非常相似,因为您可以指定软件包名称或Git路径(例如git+https://github.com/developer/project.git#branchname
)。 您还可以将Poetry配置为使用私人仓库 。
[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]
解决并安装依赖关系后,Poetry会在项目目录中创建一个名为poetry.lock
的文件。 该文件是所有下载的依赖项的清单,并且应与项目的其余部分一起保存。 然后,从源代码管理中提取项目副本的任何人都将获得所有必需软件包的相同版本。
现在,您已经准备好开始这个项目。 从现在开始,您只需要记住使用Poetry(并且只有Poetry)来管理项目的所有依赖关系和虚拟环境。
翻译自: https://www.infoworld.com/article/3527850/how-to-manage-python-projects-with-poetry.html
poetry python