Poetry:给你一个优雅的Python项目管理方式
简单来讲 , 通过使用Poetry ,让Python终于有了一种管理开发项目的虚拟环境和依赖关系的优雅方式 。
文章插图
0.导引“There should be one — and preferably only one — obvious way to do it.”(应该有一种——最好只有一种——显而易见的方法来做到这一点 。 )
虽然这句话出自蒂姆.彼得斯的《Python之禅》 , 但Python并不总是遵循这一原则 。 Python没有达到理想的一个领域是项目管理 。 很长一段时间以来 , 管理Python项目涉及到工具和方法的大杂烩 。 然而 , 事实上的标准可能是新兴的Poetry 。
Poetry()给Python带来了Go和Rust长期以来所喜爱的那种一体化项目管理工具 。 Poetry允许项目对特定的包版本有确定性的依赖关系 , 因此它们在不同的地方一致地构建 。 Poetry还使构建、打包和向PyPI发布项目和库变得更加容易 , 这样一来 , 其他人就可以分享您的Python工作成果 。
在本文中 , 我们将介绍在Python开发项目中Poetry的使用——如何设置Poetry , 如何用Poetry配置项目的依赖关系和虚拟环境 , 以及如何避免Poetry独特的工作方式带来的一些陷阱 。
1.Python中配置PoetryPoetry()与其他Python依赖项和项目管理工具有所不同 , 从配置开始 。 与使用pip不同 , Poetry使用自定义安装程序(docs/#installation) 。 安装程序将Poetry应用程序添加到用户的配置文件目录中 , 因此它可应用于系统中当前或将来的任何Python安装 。
尽管您可以使用pip install poetry在特定的Python安装中安装Poetry , 但不建议这样做 , 因为:a)它可能会与其他系统文件冲突;b)它会使在不同的Python版本和不同的虚拟环境中一致使用Poetry变得困难 。
2.创建Poetry托管的Python项目安装了Poetry之后 , 只需输入poetry new, 就可以创建一个新的Poetry托管/管理项目目录 。 这个命令创建了一个名为的子目录 , 并使用一个项目脚手架填充该目录 。
【Poetry:给你一个优雅的Python项目管理方式】Poetry项目“脚手架”包括以下内容:
- pyproject.toml——项目定义文件 。 Poetry为你管理这个定义 。 如果您知道自己在做什么 , 您可以直接编辑这个文件 , 但大多数时候并不需要这样做 。
- README.rst——一个空的README文件 , 格式为ReStructuredText , 该文件格式用于Python文档 。 (没有规定说你的文档必须使用.rst格式 , 对于较简单的情况 , 可以使用Markdown 。 )
- tests——带有用于单元测试的脚手架的子目录 。 如果您还没有为新项目编写测试的习惯 , 那么您应该养成这样的习惯!
- 最后 , 是项目名称的子目录 , 其中包含项目的代码 。
- Unix: ~/.cache/pypoetry/virtualenvs
- MacOS: ~/Library/Caches/pypoetry/virtualenvs
- Windows: C:\Users\
\AppData\Local\pypoetry\Cache\virtualenvs or %LOCALAPPDATA%\pypoetry\Cache\virtualenvs
要在Poetry中设置虚拟环境 , 转到项目的目录并键入poetry env use python 。 Poetry将创建一个新的虚拟环境 , 将其存储在缓存目录中 , 并为虚拟环境显示一个随机生成的名称(请注意名称 , 以便以后使用) 。
为了方便起见 , Poetry还将安装项目在pyproject.toml文件中列出的所有依赖项 。 如果您想要从其他地方复制一个Poetry项目并在您的系统上设置它 , 您会发现这个超级有用 。
注意 , 如果您在一个已经有Poetry分配的虚拟环境的项目目录中使用poetry env use python, 那么Poetry将在CLI会话的上下文中激活该虚拟环境 。
接下来是比较困难的部分 , 即让Poetry管理的虚拟环境与IDE一起工作 。 例如 , Visual Studio Code自动检测项目目录中虚拟环境的存在 , 但依然还检测不到使用Poetry管理的虚拟环境的存在 。 近期的解决方案是在项目settings.json文件中添加一行 , 指明Poetry保存虚拟环境的位置:
"python.venvPath": "C:\\Users\\username\\AppData\\Local\\pypoetry\\Cache\\virtualenvs"
在进行此更改后 , 请确保重新启动Visual Studio Code 。
如果你不想让Poetry管理你的虚拟环境 , 你可以用如下命令禁用它:
- 车企|华为不造车!但任正非加了一个有效期,3年
- 同轴心配合|用SolidWorks画一个直角传动,画四个零件就行
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 丹丹|福佑卡车创始人兼CEO单丹丹:数字领航 驶向下一个十年
- 发展|新基建发展迅猛,必然会是一个巨大的市场机遇
- 缺点|骁龙865+12GB已降至2399,X轴马达+55W快充,缺点只有一个
- 空间|垃圾文件正在吞噬你的C盘空间用这四种方法,还你一个干净的C盘
- 商业|AC有望建立一个商业帝国吗?
- 中国汽车|2020年,我们攒了一个局,串了一条链,下了一盘棋
- 走心|平安夜还在送苹果?太不走心了,教你几招,快来物色一个