本文介绍使用Poetry在Fedora Linux系统上管理Python项目的方法,内容有:在Fedora上安装Poetry、初始化项目、创建一个虚拟环境、添加依赖项、列出软件包。
前言 Python开发人员经常创建一个新的虚拟环境来分离项目依赖项,然后使用pip、pipenv等工具对其进行管理,参考在Fedora系统上安装Pipenv的方法。Poetry是用于简化Python中的依赖项管理和打包的工具。本文将展示如何使用Poetry在Fedora上管理Python项目。 与其他工具不同,Poetry仅使用单个配置文件进行依赖性管理、打包和发布。这样就无需使用其他文件,例如Pipfile、MANIFEST.in、setup.py等。
在Fedora上安装Poetry 如果已经使用Fedora 32、33或更高版本,则可以使用以下命令从命令行直接安装Poetry: $ sudo dnf install poetry 注:在Fedora Silverblue或CoreOs上,Python 3.9.2是核心提交的一部分,可以使用rpm-ostree install poetry。
初始化项目 使用new命令创建一个新项目: $ poetry new poetry-project 用project创建的项目的结构如下所示:
project使用pyproject.toml来管理项目的依赖项。最初,此文件将类似于以下内容: [tool.poetry] name = "poetry-project" version = "0.1.0" description = "" authors = ["Kadermiyanyedi <kadermiyanyedi@hotmail.com>"] [tool.poetry.dependencies] python = "^3.9" [tool.poetry.dev-dependencies] pytest = "^5.2" [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" 注:该文件包含4个部分,如下说明 第一部分包含描述项目的信息,例如项目名称、项目版本等。 第二部分包含项目依赖项,这些依赖关系是构建项目所必需的。 第三部分包含开发依赖关系。 第四部分描述了PEP 517中的building system。 如果已经有一个项目,或者创建了自己的项目文件夹,并且想使用Poetry,请在项目中运行init命令: $ poetry init 执行此命令后,将看到一个交互式shell程序,用于配置您的项目。
创建一个虚拟环境 如果要创建虚拟环境或激活现有虚拟环境,请使用以下命令: $ poetry shell 默认情况下,Poetry会在/home/username/.cache/pypoetry项目中创建虚拟环境。可以通过编辑Poetry配置来更改默认路径。使用以下命令查看配置列表: $ poetry config --list cache-dir = "/home/username/.cache/pypoetry" virtualenvs.create = true virtualenvs.in-project = true virtualenvs.path = "{cache-dir}/virtualenvs" 更改virtualenvs.in-project配置变量以在项目目录中创建虚拟环境,Poetry命令是: $ poetry config virtualenv.in-project true
添加依赖项 使用poetry add命令为项目安装依赖项: $ poetry add django 可以使用带有–dev选项的add命令来标识仅用于开发环境的任何依赖项: $ poetry add black --dev add命令创建一个poetry.lock文件,该文件用于跟踪软件包的版本。如果poetry.lock文件不存在,则将安装pyproject.toml中所有依赖项的最新版本。如果poetry.lock确实存在,则Poetry将使用文件中列出的确切版本,以确保包版本与项目中所有工作人员的版本一致。 使用poetry install命令在当前项目中安装所有依赖项: $ poetry install 使用no-dev选项防止安装开发依赖项: $ poetry install --no-dev
列出软件包 show命令列出所有可用的软件包,tree选项将软件包列为树: $ poetry show --tree
包括软件包名称以列出特定软件包的详细信息: $ poetry show requests
最后,如果想了解软件包的最新版本,则可以使用latest选项: $ poetry show --latest
相关主题 |