当前位置: 首页 > 网络应用技术

使用Python诗歌进行依赖管理

时间:2023-03-08 11:57:46 网络应用技术

  摘要:在本教程中,您探讨了如何创建一个新的Python诗歌项目以及如何在现有项目中添加诗歌。

  当您的Python项目取决于外部包时,您需要确保每个软件包的正确版本。更新后,软件包可能无法像更新之前一样工作。依赖性项目(例如Python Poetry)可以帮助您指定,安装和分析和分析项目中的外部袋子。这样,您可以确保在每台机器上始终使用正确的依赖项。

  使用诗歌将帮助您启动新项目,维护现有项目以及主依赖项管理。您将准备使用pyproject.toml文件,这将是Python项目中建筑需求的标准。

  为了完成本教程并充分利用它,您应该是虚拟环境,模块和包装以及PIP。

  尽管宗教专注于依赖项,但诗歌也可以帮助您建立和打包项目。如果您想分享工作,甚至可以将诗歌项目发布到Python包装索引(PYPI)。

  在研究Python诗歌的细节之前,您需要了解一些先决条件。首先,您将阅读本教程中遇到的术语的简要概述。

  如果您曾经在Python脚本中使用语句,那么您已经使用了模块。这些模块的某些模块可能是您编写的Python文件。可能是在DateTime等模块中构建的其他模块。有时,Python还不够。当时,您可以转到外部包装模块。当您的Python代码取决于外部模块时,您可以说这些软件包是您项目的依赖项目。

  您可以找到不属于PYTHON标准库的软件包。在了解其工作原理之前,您需要在系统上安装诗歌。

  要在命令行中使用诗歌,应该在系统中安装它。如果您只想尝试它,则可以使用PIP。但是您应该仔细尝试此方法,因为诗歌将安装您自己的依赖性,这可能与您在项目中使用的其他软件包冲突。

  安装诗歌的推荐方法是使用官方的安装诗脚本。您可以手动下载并运行此Python文件,或者您可以在下面选择操作系统以使用相应的命令:

  如果您使用的是Windows,则可以将带有CMDLET的Invoke -webrequest与-useBasicParsing选项一起下载到标准输出流(STDOUT)(STDOUT)(|),您将转移到标准输入的Python,流(标准输入)。在这种情况下,您的内容通过管道安装poetry.py传输到Python解释器。

  注意:一些用户在使用Windows 10上使用PowerShell命令时报告错误。

  在输出中,您应该看到安装的消息。您可以在终端中运行以查看诗歌是否有效。此命令将显示您当前的诗歌版本。如果您想更新诗歌,则可以运行诗歌自我更新。

  安装诗歌后,是时候看看诗歌的工作原理。在本节中,您将学习如何启动新的诗歌项目以及如何在现有项目中添加诗歌。您还将看到项目结构并检查pyproject.toml文件。

  您可以将新的命令和项目名称用作参数来创建一个新的诗歌项目。在本教程中,该项目称为RP POETRY。创建项目,然后输入新创建的目录:

  通过运行诗歌新的RP诗歌,您可以创建一个新的文件夹RP Poetry/。当您在文件夹中查看时,您会看到一个结构:

  诗歌将自动为您标准化您的名字。它将在project name_s the pross the the Project name the the python name/in python中传达procation name_s promint name_s中的骨折编号()。Module.in为了更好地控制创建软件包名称,您可以使用-name选项将其命名与项目文件夹不同:

  如果您希望将源代码存储在附加的SRC/Parent文件夹中,那么诗歌允许您使用以下SRC徽标来遵守本协议:

  通过添加SRC徽标,您创建了一个文件夹SRC/,其中包含您的rp_poetry/Directory:

  创建新的诗歌项目时,您将立即收到一个基本的文件夹结构。

  rp_poetry/subfolter本身是否壮观?在此目录中,您会找到一个文件__init__.py包含您的包版本:

  当您跳到测试/文件夹并打开test_rp_poetry.py时,您会注意到可以通过rp_poetry导入它:

  诗歌还向项目中添加了第一个测试。此test_version()函数检查__vers_____variable rp_poetry/__ init__.py conture condife fircor是版本。位置为pyproject.toml文件。

  诗歌最重要的文件之一是pyproject.toml文件。该文件不是诗歌的发明。该文件是PEP 518:PEP 518:标准的配置文件。

  此PEP指定Python软件包如何指定自己的构造依赖性以执行其选择的构建系统。作为本规范的一部分,将新的配置文件介绍到该软件包中以指定其构造依赖项(希望相同的依赖项配置文件将用于将来的配置详细信息)。(源)

  作者在上面提到的“新配置文件”中考虑了几种文件格式。在本文中,他们决定使用toml格式,汤姆(Tom)明显的最低语言的缩写。在他们的看法中,汤姆(Toml比其他选项(YAML,JSON,CFG或INI)。要查看TOML的外观,请打开pyproject.toml文件:

  您可以在pyproject.toml文件中看到四个部分。这些部分称为表。它们包括工具识别,例如诗歌和用于管理或构建例程的相关项目的说明。

  如果表名是该工具特定的,则必须是工具。通过使用此类子标准,您可以在项目中的不同工具中添加描述。在这种情况下,仅使用工具。但是,您可能会在其他项目的其他项目中看到这样的示例[tool.pytest.ini_optings]。

  在上面的[工具。

  [工具。这些子标签。现在重要的是您必须识别的相关性和发展依赖性之间的差异。

  pyproject.toml文件的最后一个表位于[build-System] 15行中。该表定义了可以使用诗歌和其他施工工具的数据,但是由于它不是特定于该工具的,因此没有前缀。用pyproject.toml创建了一个用两个键的文件:

  如果您想了解有关pyproject.toml文件的更多信息,则可以通过在PEP 517中阅读源代码树来了解更多信息。

  当您用诗歌开始一个新项目时,这是您启动pyproject.toml.toml.over Time的文件,您将添加有关您的包和您使用的工具的详细信息。随着Python项目的增长,您的Pyproject.toml文件也将成长。对于sub-meter [tool.poetry.ectionencies]和[tool.poetry.dev依赖性]。在下一节中,您将了解如何扩展这些子桌。

  设置诗歌项目后,真正的工作就可以开始。就位,您就可以开始编码。在过程中,您将了解诗歌如何为您提供虚拟环境并处理依赖项。

  当您启动一个新的Python项目时,创建虚拟环境是一种很好的方法。否则,您可能会混淆来自不同项目的不同依赖性。使用虚拟环境是诗歌的核心功能之一,它将永远不会干扰您全局Python安装。

  但是,诗歌在启动项目时不会立即创建虚拟环境。rp poetry/然后运行一个命令:

  目前,应该没有输出。

  当您运行某些命令时,诗歌将一直创建一个虚拟环境。如果您想更好地控制虚拟环境的创建,那么您可以决定清楚地告诉诗歌您要使用哪种Python版本,然后从那里开始:

  使用此命令,您将使用同一诗歌的相同python版本。当您是Phthon可执行程序路径时,请使用Python3的工作。

  注意:或者,您可以将绝对路径传递到Python可执行文件。它应该与您可以在pyproject.toml文件中找到的Python版本的Python版本的Python版本匹配。如果不是,那么您可能会遇到麻烦。,因为您使用的Python版本与项目所需的版本不同。在您的环境中运行的代码可能在另一台计算机上存在问题。

  更糟糕的是,外部包通常取决于特定的python版本。因此,安装软件包的用户可能会接收错误消息,因为您的依赖性版本与其python版本不兼容。

  运行时,您会看到一条消息:

  如您所见,诗歌已经为您的项目环境构建了一个唯一的名称。名称包括项目名称和Python版本。中间看似随机的字符串是您父亲目录的哈希值。通过中间的此独特的字符串,诗歌可以处理具有相同名称的多个项目和系统上相同的Python版本。这很重要,因为默认情况下,诗歌在同一文件夹中创建所有虚拟环境。

  诗歌不需要任何其他配置,在Virtualenvs/Poetry Cache Directory的文件夹中创建虚拟环境:

  如果要更改默认的高速缓存目录,可以编辑诗歌的配置。当您已经使用VirtualenvWrapper或其他第三部分工具来管理虚拟环境时,这很有用。查看当前配置,包括缓存的配置-dir,您可以运行以下命令:

  通常,您不必改变这条路。如果您想了解有关诗歌虚拟环境的更多信息,那么诗歌文档包含有关管理环境的一章。

  只要您在项目文件夹中,Potry就会使用与之相关的虚拟环境。如果您有任何疑问,您可以运行以下命令以检查是否再次激活虚拟环境:

  这将显示类似的RP诗 - awdwy-py3.9(激活)。有了激活的虚拟环境,您可以开始管理一些依赖关系并看到诗歌的魅力。

  诗歌的一个关键要素是其依赖关系的处理。在开始之前,首先查看文件pyproject.toml中的两个依赖表:

  目前正在为您的项目声明两个依赖项。另一个是Python本身。另一个是Pytest,是一个广泛使用的测试框架。如您之前所看到的,您的项目包含一个测试/文件夹和test_rp_poetry.py file.py file.py pytest作为依赖项,锅罐可以,锅罐可以安装后立即进行测试。

  注意:编写本教程时,Pytest与Python 3.10不起作用以运行诗歌。Poetry安装了与Python 3.10不兼容的Pytest版本。

  诗歌开发人员已经意识到了这个问题,并且将通过诗歌1.2的发行来修复。

  确保在RP诗/项目文件夹中运行该命令:

  使用install命令在pyproject.toml文件中检查依赖项项目,然后分析和安装它们。当您有许多依赖关系需要使用不同版本的不同版本的不同的第三方软件包时,分析部分尤为重要。任何软件包,诗歌都将确定该软件包的哪个版本符合根据需要设置的版本限制。

  除了Pytest的要求外,诗歌还安装了项目本身。这样,您可以立即将RP_POETRY导入到测试中:

  安装项目软件包后,您可以导入RP_POETRY测试并检查__version __字符串。在PyTest安装中,您可以使用诗歌运行命令执行测试:

  您当前的测试已经成功运行,因此您可以继续信心地编码。但是,如果仔细观察,您会发现一个奇怪的东西。它说Pytest-5.4.3,5.2在pyproject.toml文件中未提及。好的!

  回顾一下,文件中的pytest依赖项项目pyproject.toml如下所示:

  ^先前的插入符号()5.2具有特定的含义,这是诗歌提供的版本之一。这意味着诗歌可以安装与版本的符合版本的任何版本的任何版本,这是允许的5.4.3。6.0版将不允许。

  当诗歌试图分析依赖关系时,插入符号之类的符号将变得很重要。如果只有两个要求,这不是太难。通过将新软件包安装到您的项目中。

  您可以在PIP之前使用不是Python标准库的软件包。如果您的PIP安装使用软件包名称作为参数,那么PIP正在寻找Python软件包索引上的软件包。您可以以相同的方式使用诗歌。

  如果要在项目中添加外部包,则可以运行一个命令:

  通过运行诗歌添加请求,您可以在项目中添加最新版本的请求库。您可以使用版本约束,请求<= 2.1或请求== 2.24如果您想更具体,则不添加任何约束时,诗歌将始终尝试安装最新版本的软件包。

  有时您只想在开发环境中使用一些软件包。与Pytest一起,您找到了其中一个包裹。另一个公共库包括Black,sphinx生成的文档,以及类似的静态分析工具Pylint,Flake8,Mypy,Mypy,,或覆盖范围。

  为了清楚地将诗歌包作为发展依赖项,您可以使用DEV选项来运行。您还可以使用Shorthand -D选项,它与以下DEV相同:

  您可以将请求添加到项目依赖项和黑色开发依赖项中。Poetry在后台为您做了一些事情。一方面,它将您声明的依赖项添加到pyproject.toml文件:

  诗歌将请求软件包作为项目依赖项添加到工具中。poetry.sptipencies表,并将其黑色添加为“开发依赖关系”的依赖。

  区分项目依赖性和开发依赖性可以阻止用户安装程序运行程序。开发依赖项仅与书包的其他开发人员有关。他们希望Pytest使用黑色。当用户安装您的软件包时,他们只会安装请求。

  注意:您可以进一步并声明可选的依赖性。当您希望用户选择安装不需要但增强袋子的特定数据库适配器时,这很方便。您可以在诗歌文档中了解有关可选依赖项的更多信息。

  除了更改pyproject.toml文件外,诗歌还创建了诗歌。在此文件中,诗歌将跟踪您在项目中使用的所有软件包和精确版本。

  当您运行诗歌添加命令时,诗歌将自动更新pyproject.toml并修复诗歌中的分析版本。档案并以后锁定。

  如果您想使用Python构建网络爬网,那么您可能需要使用美丽的汤来解析您的数据。将其添加到工具中。poetry.poetry.depentencies表中,文件中的pyproject.toml:

  通过添加BeautifulSoup4 =“ 4.10.0”,您可以告诉诗歌应该完全安装。当您需要在pyproject.toml files.toml文件中添加需求时,就没有安装。,您可以在手动添加依赖项后手动安装诗歌安装,因为诗歌会首先找到诗歌。lock文件。如果找不到,诗歌将分析pyproject.toml文件中列出的依赖项。

  诗歌文件存在后,诗歌将依靠文件来安装依赖项。单独的诗歌安装将触发警告,表明两个文件是不同的,错误会导致错误,因为诗歌不知道该版本中的任何版本BeautifulSoup4项目。

  要修复pyproject.toml文件中手动添加的因项目,请首先运行诗歌锁命令:

  通过运行诗歌锁,将pyproject.toml文件中的所有相关项目交给诗歌。直接依赖性。

  注意:如果适合您的新版本可用诗歌锁,则此命令将更新您的现有依赖项。如果您不想更新poetry.lock文件中的任何依赖项,则必须将-no-update选项添加到诗歌锁命令::

  在这种情况下,诗歌仅分析新的依赖性,但是诗歌lock不会改变文件中的任何现有依赖项。

  现在您已经固定了所有依赖项,现在该安装它们了,以便可以在项目中使用它们。

  如果您按照上一节中的步骤遵循步骤,那么您已经安装了Pytest,而Black则使用诗歌添加命令。您还锁定了BeautifulSoup4,但是您尚未安装美丽的汤。要验证尚未安装BeautifulSoup4,请使用以下命令打开Python解释器诗歌的运行:

  执行诗歌运行python3将在诗歌环境中打开一个交互式式会话。首先,尝试导入请求。这应该是完美的。

  正如预期的那样,您可以毫无困难地导入,并且BS4找不到模块。Typeexit(),然后单击Exteractive Python解释器Enter。

  用诗歌锁定命令将依赖项项目锁定后,您必须运行诗歌安装命令,以便实际上可以在项目中使用它们:

  通过运行诗歌安装,读取诗歌。lock文件并安装在其中声明的所有依赖项。

  完美!这次没有错误,您有您声明的确切版本。这意味着美丽的汤已正确固定在您的Poetry.lock文件中,可以在您的项目中安装,并且可以使用。列出可用的包裹在项目并检查他们的详细信息中,您可以使用Show命令。当您使用Help徽标运行它时,您将看到如何使用它:

  要检查软件包,您可以将Show软件包名称用作参数,也可以使用-tree选项以树的形式列出所有相关项目。这将帮助您检查项目的嵌套需求。

  为了更新您的依赖关系,诗歌根据两种情况提供了不同的选项:

  您可以在pyproject.toml文件中找到版本限制。当依赖项的新版本仍然满足您的版本限制时,您可以使用以下更新命令:

  更新命令将在版本限制内更新所有软件包和依赖项。诗歌将更新您的poetry.lock文件。

  如果要更新一个或多个特定的软件包,则可以将它们列为参数:

  使用此命令,诗歌将搜索文件中列出的新版本和新版本。有效。beautifulsoup4project.tomlpoetry.lockproject.toml

  要更新依赖项项目,如果要使用pyproject.toml文件中定义的较高版本,则需要预先调整文件。其他选择是添加使用版本约束或最新标签运行命令:

  当您使用最新标记的命令运行添加时,它将找到最新版本的软件包,然后更新您的pyproject.toml file.toml file.ruding最新标签或版本约束对于使用添加命令至关重要。如果没有它,您将接收一条消息,表明您的项目中已经存在软件包。此外,请不要忘记dev添加符号以开发依赖关系。否则,您将把软件包添加到常规依赖项中。

  添加新版本后,您必须运行在上一节中学习的安装。只能以这种方式锁定您的更新在poetry.lock文件中。

  如果您不确定将为您的依赖项引入哪种版本更改,则可以使用直接运行徽标。此徽标适用于命令更新并添加命令。IT显示您在终端中的操作而无需执行任何操作。这样,您可以安全地发现版本更改并确定哪种更新解决方案最适合您。

  尽管pyproject.toml文件中的版本要求可能非常松散,但诗歌会锁定您在poetry.lock file中实际使用的版本中。这就是为什么在使用git.provide文件时应提交此文件的原因。通过poetry.lock的存储库,您可以确保所有开发人员都会使用相同版本的所需软件包。当您遇到包含诗歌的存储库时,最好使用诗歌。

  使用Poetry.lock,您可以确保使用的版本与其他开发人员使用的版本完全相同。如果其他开发人员不使用诗歌,则可以将其添加到没有诗歌的情况下不设置的现有项目中。

  您的项目很可能不是从诗歌开始的。现有的Python项目。

  如果您的项目仅包含一些Python文件,那么您仍然可以添加诗歌作为将来构造的基础。在此示例中,只有一个文件,hello.py:

  该脚本唯一可以做的是输出字符串“ Hello World!”。但是也许这只是一个大项目的开始,因此您决定在项目中添加诗歌。POETRYnew,您将改用以下诗歌init命令使用以前的命令:

  诗歌init命令将启动交互式单词以创建pyproject.toml files.poetry为您提供需要设置的建议。您可以按Enter使用它们。当您不声明任何依赖项时,pyproject创建的文件。tomlpoetry如下:

  内容看起来类似于您在前面部分中所经历的示例。

  现在,您可以使用诗歌项目提供的所有命令。与pyproject.toml文件一起,您可以立即运行脚本:

  因为诗歌没有找到任何可以使用的虚拟环境,所以它在执行脚本之前创建了一个新环境。此操作后,它显示了您的Hello World!消息没有任何错误。这意味着您现在有一个正在运行的诗歌项目。

  有时您的项目已经有一个要求。txt文件。查看python网络爬网的文件。

  使用CAT实用程序,您可以读取文件并将内容写入标准输出。在此示例中,它显示了网络爬网项目的依赖项项目。使用诗歌项目后,可以通过结合此猫实用程序来使用诗歌init与以下诗歌添加命令:

  当需求文件如此简单时,使用诗歌添加和猫可以节省一些手动工作。

  需求.txt,有时文件更复杂。在这些情况下,您可以执行运行的测试并查看结果,或者手动将要求添加到文件中文件中的[tool.poetry.ypentercies]表中。查看是否您的结构pyproject.toml是有效的,您可以在诗歌检查后运行。

  在某些情况下,您必须有一个要求。txt文件。例如,您可能需要在Heroku上托管您的Django项目。在这种情况下,诗歌提供了一个export命令。如果您有一个诗歌项目,则可以从您的Poetry.lock文件:您可以创建一个文件:

  诗歌导出使用此命令来创建一个要求。TXT文件,其中包含分散和环境标记。这意味着您可以确保处理的内容非常严格,而potry.lock.lock file.lock file.if your仍然要包含在内开发依赖性,您可以将DEV添加到命令。要查看所有可用选项,可以选择诗歌导出-HELP。

  本教程向您介绍了诗歌的依赖管理。在此过程中,您使用了一些诗歌命令行界面(CLI)命令:

  您可以查看有关上述命令和诗歌提供的其他命令的更多信息。您也可以直接在终端中运行以查看信息!

  在本教程中,您探讨了如何创建一个新的Python诗歌项目以及如何在现有项目中添加诗歌。诗歌的关键部分是pyproject.toml file.toml file.toml poetry.lock,您可以确保每个包的确切版本的确切版本安装项目。当您在诗歌中跟踪文件时,锁定存储库时,还必须确保项目中的所有其他开发人员在其机器上安装相同的依赖版本。

  本文分享了华为云社区的诚意,作者:Yuchuan。