当前位置: 首页 > 科技观察

如何使用Poetry在Fedora上管理你的Python项目?

时间:2023-03-16 16:40:24 科技观察

Python开发者往往会新建一个虚拟环境来分离项目依赖,然后使用pip、pipenv等工具进行管理。Poetry是一个在Python中简化依赖管理和打包的工具。这篇文章将向您展示如何使用Poetry在Fedora上管理您的Python项目。与其他工具不同,Poetry仅使用一个配置文件进行依赖管理、打包和发布。这消除了对Pipfile、MANIFEST.in、setup.py等不同文件的需要。它也比使用多个工具更快。让我们详细介绍用于开始使用Poetry的命令。在Fedora上安装Poetry如果您已经在使用Fedora32或更高版本,则可以使用以下命令直接从命令行安装Poetry:$sudodnfinstallpoetry编者注:在FedoraSilverblue或CoreOs上,Python3.9.2是核心提交部分可以使用以下命令安装Poetry:rpm-ostreeinstallpoetry初始化项目使用new命令新建项目:$poetrynewpoetry-project用Poetry创建的项目结构如下:├──poetry_project│└──init.py├──pyproject.toml├──README.rst└──tests├──init.py└──test_poetry_project.pyPoetry使用pyproject.toml来管理项目依赖。最初,该文件如下所示:[tool.poetry]name="poetry-project"version="0.1.0"description=""authors=["Kadermiyanyedi"][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个部分:第一部分包含描述项目的信息,例如项目名称、项目版本等。第二部分包含项目的依赖项。构建项目需要这些依赖项。第三部分包含开发依赖项。第四部分描述了符合PEP517的构建系统。如果您已经有一个项目,或者创建了自己的项目文件夹,并且您想要使用Poetry,请在您的项目中运行init命令。$poetryinit执行此命令后,您将看到一个用于配置项目的交互式shell。创建虚拟环境如果你想创建一个虚拟环境或激活一个现有的,使用下面的命令:$poetryshellPoetry默认在/home/username/.cache/pypoetry项目中创建虚拟环境。您可以通过编辑Poetry配置来更改默认路径。使用以下命令查看配置列表:$poetryconfig--listcache-dir="/home/username/.cache/pypoetry"virtualenvs.create=truevirtualenvs.in-project=truevirtualenvs.path="{cache-dir}/virtualenvs"修改virtualenvs.in-project配置变量,在项目目录下创建虚拟环境。Poetry命令是:$poetryconfigvirtualenv.in-projecttrue添加依赖项使用poetryadd命令为项目安装依赖项:$poetryadddjango您可以使用带有--dev选项的add命令来识别任何开发-onlyDependency:$poetryaddblack--devadd命令会创建一个poetry.lock文件来跟踪包的版本。如果poetry.lock文件不存在,则安装pyproject.toml中所有依赖项的最新版本。如果poetry.lock存在,Poetry将使用文件中列出的确切版本,确保使用该项目的每个人都拥有相同版本的包。使用poetryinstall命令安装当前项目中的所有依赖项:$poetryinstall使用--no-dev选项防止安装开发依赖项:$poetryinstall--no-dev列出包show命令将列出所有可用的软件包。--tree选项将在树中列出包:$poetryshow--treedjango3.1.7一个鼓励快速开发和干净、实用设计的高级PythonWeb框架。├──asgiref>=3.2.10,<4├──pytz*└──sqlparse>=0.2.2包含包名称以列出特定包的详细信息:$poetryshowrequestsname:requestsversion:2.25.1description:PythonHTTPforHumans.dependencies-certifi>=2017.4.17-chardet>=3.0.2,<5-idna>=2.5,<3-urllib3>=1.21.1,<1.27最后,如果你想知道最新版本一个包,你可以通过--latest选项:$poetryshow--latestidna2.103.1应用程序中的国际化域名asgiref3.3.13.3.1ASGI规范、帮助程序代码和适配器