在本教程中探索了如何创建新的 Python Poetry 项目以及如何将 Poetry 添加到现有项目中.docx
《在本教程中探索了如何创建新的 Python Poetry 项目以及如何将 Poetry 添加到现有项目中.docx》由会员分享,可在线阅读,更多相关《在本教程中探索了如何创建新的 Python Poetry 项目以及如何将 Poetry 添加到现有项目中.docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在本教程中,探索了如何创建新的PythonPoetry项目以及如何将Poetry添加到现有项目中。可以在下方选择您的操作系统以使用相应的命令视窗LinuxmacOSPSC:(Invoke-WebRequest-Uris:/raw.githubusercontent/python-poetry/poetry/master/install-poetry.py-UseBasicParsing).Content|python-假如您使用的是Windows那么您可以使用Invoke-Webrequest带有-UseBasicParsing选项的cmdlet将恳求的URL的内容下载到标准输出流(stdou
2、t)。随着管道字符|你移交输出到标准输入流标准输入的python。在这种情况下您将的内容通过管道install-poetry.py传输到Python解释器。注意有些用户在Windows10上使用PowerShell命令时会报告错误。在输出中您应该看到安装完成的消息。您可以poetry-version在终端中运行以查看是否poetry有效。此命令将显示您当前的Poetry版本。假如要更新Poetry那么可以运行poetryselfupdate.PythonPoetry入门安装Poetry后是时候看看Poetry是怎样工作的了。在本节中您将学习怎样开场一个新的Poetry工程和怎样将Poetry添
3、加到现有工程中。您还将看到工程构造并检查pyproject.toml文件。创立一个新的Poetry工程您可以使用new命令以及工程名称作为参数来创立新的Poetry工程。在本教程中该工程称为rp-poetry.创立工程然后进入新创立的目录$poetrynewrp-poetry$cdrp-poetry通过运行poetrynewrp-poetry您可以创立一个名为的新文件夹rp-poetry/。当您查看文件夹内部时您会看到一个构造rp-poetry/rp_poetry/_init_.pytests/_init_.pytest_rp_poetry.pyREADME.rstpyproject.toml
4、Poetry会自动为您标准化包名。它将-工程名称中的破折号()转换_为文件夹名称中的下划线()rp_poetry/。否那么Python中将不允许使用该名称因此您无法将其作为模块导入。为了更好地控制创立包名称您可以使用该-name选项以不同于工程文件夹的方式命名$poetrynewrp-poetry-namerealpoetry假如您更喜欢将源代码存储在额外的src/父文件夹中那么Poetry可以让您使用以下-src标志来遵守该约定$poetrynew-srcrp-poetry$cdrp-poetry通过添加-src标志您创立了一个名为的文件夹src/其中包含您的rp_poetry/目录rp-p
5、oetry/src/rp_poetry/_init_.pytests/_init_.pytest_rp_poetry.pyREADME.rstpyproject.toml创立新的Poetry工程时您将立即收到一个根本的文件夹构造。检查工程构造该rp_poetry/子文件夹本身是不是很壮观呢。在这个目录中你会找到一个_init_.py包含你的包版本的文件#rp_poetry/_init_.py_version_0.1.0当您跳到tests/文件夹并翻开时test_rp_poetry.py您会注意到它rp_poetry已经是可导入的#tests/test_rp_poetry.pyfromrp_po
6、etryimport_version_deftest_version():assert_version_0.1.0Poetry还为该工程添加了第一个测试。该test_version()函数检查的_version_变量是否rp_poetry/_init_.py包含预期的版本。但是该_init_.py文件并不是您定义包版本的唯一位置。另一个位置是pyproject.toml文件。使用pyproject.toml文件使用Poetry最重要的文件之一是pyproject.toml文件。这个文件不是Poetry的创造。这是PEP518中定义的配置文件标准此PEP指定Python软件包应怎样指定它们具有的
7、构建依赖项以执行其选择的构建系统。作为本标准的一局部为软件包引入了一个新的配置文件用于指定它们的构建依赖项期望一样的配置文件将用于将来的配置细节。来源考虑了上面引用中提到的“新配置文件的几种文件格式。最后他们决定采用TOML格式即TomsObviousMinimalLanguage的缩写。在他们看来TOML足够灵敏比其他选项YAML、JSON、CFG或者INI具有更好的可读性以及更少的复杂性。要查看TOML的外观请翻开pyproject.toml文件1#pyproject.toml3tool.poetry4namerp-poetry5version0.1.06description7autho
8、rsPhilippphilipprealpython9tool.poetry.dependencies10python3.912tool.poetry.dev-dependencies13pytest5.215build-system16requirespoetry-core1.0.017build-backendpoetry.core.masonry.api您可以在pyproject.toml文件中看到四个局部。这些局部称为表。它们包含诸如Poetry之类的工具识别以及用于依赖项管理或者构建例程的指令。假如表名是特定于工具的那么必须以tool.为前缀。通过使用这样的子表您可以为工程中的不同工
9、具添加讲明。在这种情况下只有tool.poetry.但是你可能会看到这样的例子tool.pytest.ini_options为pytest在其他工程中。在tool.poetry上面第3行的子表中您可以存储有关您的Poetry工程的一般信息。您的可用键由Poetry定义。固然有些键是可选的但您必须指定四个键name:你的包名version:包的版本最好遵循语义版本控制description您的包裹的简短描绘authors:列表格式nameemail第tool.poetry.dependencies9行以及tool.poetry.dev-dependencies第12行的子表对于您的依赖项管理至关
10、重要。在下一局部向Poetry工程添加依赖项时您将解析有关这些子表的更多信息。如今重要的是要认识到的包相关性以及开展依赖之间的区别。该pyproject.toml文件的最后一个表位于第build-system15行。该表定义了Poetry以及其他构建工具可以使用的数据但由于它不是特定于工具的因此它没有前缀。Poetry创立了pyproject.toml具有两个键的文件requires构建包所需的依赖项列表使此键成为必需build-backend用于执行构建经过的Python对象假如您想更多地解析pyproject.toml文件的这一局部那么您可以通过浏览PEP517中的源代码树来解析更多信息。
11、当您使用Poetry开场一个新工程时这就是pyproject.toml您开场的文件。随着时间的推移您将添加有关您的包以及您正在使用的工具的配置详细信息。随着Python工程的增长您的pyproject.toml文件也会随之增长。对于子表tool.poetry.dependencies以及tool.poetry.dev-dependencies.在下一节中您将解析怎样扩展这些子表。使用PythonPoetry一旦你设置了一个Poetry工程真正的工作就可以开场了。一旦Poetry到位您就可以开场编码。在此经过中您将解析Poetry怎样为您提供虚拟环境并处理您的依赖项。使用Poetry的虚拟环境当
12、您开场一个新的Python工程时创立一个虚拟环境是一种很好的做法。否那么您可能会混淆来自不同工程的不同依赖项。使用虚拟环境是Poetry的核心功能之一它永远不会干扰您的全局Python安装。但是Poetry不会在您启动工程时立即创立虚拟环境。您可以通过让Poetry列出连接到当前工程的所有虚拟环境来确认Poetry尚未创立虚拟环境。假如你还没有cd进入rp-poetry/然后运行一个命令$poetryenvlist目前不应该有任何输出。当您运行某些命令时Poetry会一路创立一个虚拟环境。假如您想更好地控制虚拟环境的创立那么您可能决定明确告诉Poetry您要为其使用哪个Python版本然后从那
13、里开场$poetryenvusepython3使用此命令您将使用与安装Poetry一样的Python版本。使用python3的作品当你在你的Python可执行程序PATH。注意或您可以将绝对途径传递给Python可执行文件。它应该与您可以在pyproject.toml文件中找到的Python版本约束相匹配。假如没有那么您可能会遇到费事因为您使用的Python版本与工程所需的版本不同。在您的环境中运行的代码在另一台机器上可能有问题。更糟糕的是外部包通常依赖于特定的Python版本。因此安装包的用户可能会收到错误消息因为您的依赖项版本与其Python版本不兼容。当你运行时envuse你会看到一条消
14、息Creatingvirtualenvrp-poetry-AWdWY-py3.9in/Library/Caches/pypoetry/virtualenvsUsingvirtualenv:/Library/Caches/pypoetry/virtualenvs/rp-poetry-AWdWY-py3.9如您所见Poetry为您的工程环境构建了一个唯一名称。该名称包含工程名称以及Python版本。中间看似随机的字符串是您的父目录的哈希值。通过中间的这个唯一字符串Poetry可以处理系统上具有一样名称以及一样Python版本的多个工程。这很重要因为默认情况下Poetry在同一个文件夹中创立所有虚拟
15、环境。Poetry无需任何其他配置在virtualenvs/Poetry缓存目录的文件夹中创立虚拟环境假如要更改默认缓存目录那么可以编辑Poetry的配置。当您已经在使用virtualenvwrapper或者其他第三方工具来管理您的虚拟环境时这会很有用。要查看当前配置包括已配置的cache-dir您可以运行以下命令$poetryconfig-list通常您不必更改此途径。假如您想解析有关与Poetry的虚拟环境交互的更多信息那么Poetry文档包含有关管理环境的一章。只要您在工程文件夹中Poetry就会使用与之关联的虚拟环境。假如您有疑问可以envlist再次运行以下命令检查虚拟环境是否已激活
16、$poetryenvlist这将显示类似rp-poetry-AWdWY-py3.9(Activated).有了激活的虚拟环境您就可以开场管理一些依赖项并看到Poetry的魅力了。声明你的依赖Poetry的一个关键元素是它对依赖项的处理。在开场之前先看一下文件中的两个依赖表pyproject.toml#rp_poetry/pyproject.toml(Excerpt)tool.poetry.dependenciespython3.9tool.poetry.dev-dependenciespytest5.2当前为您的工程声明了两个依赖项。一个是Python本身。另一个是pytest一个广泛使用的测
17、试框架。正如您之前看到的您的工程包含一个tests/文件夹以及一个test_rp_poetry.py文件。使用pytest作为依赖项Poetry可以在安装后立即运行您的测试。注意在编写本教程时pytest使用Python3.10运行Poetry不起作用。Poetry安装了一个与Python3.10不兼容的pytest版本。Poetry开发人员已经意识到这个问题它将随着Poetry1.2的发布而得到修复。确保您在rp-poetry/工程文件夹中并运行命令$poetryinstall使用该install命令Poetry检查您的pyproject.toml文件中的依赖项然后解析并安装它们。当您有许多
18、依赖项需要使用不同版本的不同第三方包时解析局部尤其重要。在安装任何包之前Poetry会确定哪个版本的包知足其他包设置为其要求的版本限制。除了pytest它的要求之外Poetry还安装了工程本身。这样您可以立即导入rp_poetry到您的测试中#tests/test_rp_poetry.pyfromrp_poetryimport_version_deftest_version():assert_version_0.1.0安装工程包后您可以导入rp_poetry测试并检查_version_字符串。随着pytest安装您可以使用poetryrun命令来执行测试1$poetryrunpytest2te
19、stsessionstarts3platformdarwin-Python3.9.1,pytest-5.4.3,py-1.10.0,pluggy-0.13.14rootdir:/Users/philipp/RealPython/rp-poetry5collected1item91passedin0.01s您当前的测试已成功运行因此您可以放心地继续编码。但是假如您仔细观察第3行就会发现有些奇怪。它讲pytest-5.4.35.2不像pyproject.toml文件中所讲的那样。接得好回首一下文件中的pytest依赖项pyproject.toml如下所示#rp_poetry/pyproject.t
20、oml(Excerpt)tool.poetry.dev-dependenciespytest5.2前面的插入符号()5.2具有特定的含义它是Poetry提供的版本约束之一。这意味着Poetry可以安装与版本字符串最左边的非零数字匹配的任何版本。这意味着5.4.3允许使用。版本6.0将不被允许。当Poetry尝试解析依赖版本时像插入符号这样的符号将变得很重要。假如只有两个要求这并不太难。你声明的依赖越多它就越复杂。让我们看看Poetry怎样通过将新包安装到您的工程中来处理这个问题。安装带有Poetry的包您pip之前可能使用过安装不属于Python标准库的包。假如您pipinstall使用包名作
21、为参数运行那么pip在PythonPackageIndex上查找包。您可以以同样的方式使用Poetry。假如你想在requests你的工程中添加一个外部包那么你可以运行一个命令$poetryaddrequests通过运行poetryaddrequests您正在将最新版本的requests库添加到您的工程中。您可以使用版本约束requests2.1或requests2.24假如您想更详细。当您不添加任何约束时Poetry将始终尝试安装最新版本的软件包。有时您只想在开发环境中使用某些包。使用pytest您已经发现其中之一。另一种常见的库包括一个代码格式化像黑色一个文档生成等斯芬克斯以及类似的一个静
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在本教程中,探索了如何创建新的 Python Poetry 项目以及如何将 添加到现有项目中。 教程 探索 如何 创建 项目 以及 添加 现有
链接地址:https://www.taowenge.com/p-73275886.html
限制150内