python poetry2 虚拟环境和依赖管理的工具

介绍

poetry是一个Python虚拟环境和依赖管理的工具(相当于pip+venv),还提供了打包和发布的功能。

可以类似 pip 用于管理第三方模块的管理,但是比 pip 的功能强大许多,同时还包含 venv 的虚拟环境管理功能。大致的功能如下:

  • 管理第三方模块的安装与卸载
  • 管理虚拟环境
  • 管理虚拟环境的依赖
  • 管理打包与发布 其中最重要的是 虚拟环境的依赖,意识本文的重点。至于 打包与发布 对于开发者用的不是很多,在这里就不介绍了。

安装

poetry 是一个命令行工具,安装之后就可以使用 poetry 指令。可以将其安装全局环境或者是虚拟环境,我推荐安装在全局环境,这样在后面使用时不需要单独激活虚拟环境。同时 poetry 也依赖了比较多的模块,每个虚拟环境都安装一次也会比较麻烦。

pip install poetry

安装之后就会在 python 解释器的安装目录下的 Scripts 目录里面出现 poetry.exe,因为在安装 python 解释器是配置过环境变量,然后就可以直接全局使用了。

初始化 poetry 项目

1.初始化

poetry init

显示如下:

Package name []:              // 项目名称,必须 英文名,如果有中文,创建虚拟环境会失败
Version [0.1.0]:              // 版本号
Description []:               // 描述,可略
Author [, n to skip]:         //  作者
License []:                   // 开源许可
Compatible Python versions [>=3.10]:      // Python 版本号

Would you like to define your main dependencies interactively? (yes/no) [yes]     // 直接回车
        You can specify a package in the following forms:
          - A single name (requests): this will search for matches on PyPI
          - A name and a constraint (requests@^2.23.0)
          - A git url (git+https://github.com/python-poetry/poetry.git)
          - A git url with a revision         (git+https://github.com/python-poetry/poetry.git#develop)
          - A file path (../my-package/my-package.whl)
          - A directory (../my-package/)
          - A url (https://example.com/packages/my-package-0.1.0.tar.gz)

Package to add or search for (leave blank to skip):   //  直接回车

Would you like to define your development dependencies interactively? (yes/no) [yes]    // 直接回车
Package to add or search for (leave blank to skip):   // 直接回车

2.创建虚拟环境

方式一:在当前项目下创建虚拟环境

poetry config virtualenvs.in-project true

执行下面指令创建虚拟环境:

poetry env use python

可以看出:

  • 虚拟环境的路径改为项目的根目录下了
  • 名称固定位 .venv

方式二:在默认目录创建虚拟环境

Windows 系统下 poetry 预设是将虚拟环境创建在:

C:\Users\<用户名>\AppData\Local\pypoetry\Cache\virtualenvs

执行下面指令创建虚拟环境:

poetry env use python

创建一个名为 poetry-demo-随机数-py3.xxx 的虚拟环境

更换源

默认源,需要连接国外服务器,可能连接不上或网络速度慢,可以更换国内源

更改当前工程的源

执行下面命令之一:

添加阿里源:

poetry source add pypi-ali https://mirrors.aliyun.com/pypi/simple/

添加腾讯源:

poetry source add pypi-tencent https://mirrors.cloud.tencent.com/pypi/simple/

添加清华源:

poetry source add pypi-tuna https://pypi.tuna.tsinghua.edu.cn/simple

添加成功后,查看 pyproject.toml 文件,如下:

也可以直接修改 pyproject.toml 文件

更改默认源(亲测不生效)

查看默认源:

poetry config repositories

更改默认的源,执行下面命令之一:

更换为阿里云源(推荐国内用户)

poetry config repositories.pypi https://mirrors.aliyun.com/pypi/simple/

更换为豆瓣源

poetry config repositories.pypi https://pypi.doubanio.com/simple/

更换为腾讯云源

poetry config repositories.pypi https://mirrors.cloud.tencent.com/pypi/simple/

安装、移除依赖

安装依赖

poetry add flask

安装依赖-指定版本

poetry add pyarrow==18.0.0

安装依赖(使用指定源)

# 从自定义的 "aliyun" 源安装依赖
poetry add requests --source aliyun

# 从私有源安装内部包
poetry add my-internal-package --source my-private

移除依赖

poetry remove flask

查看依赖树

poetry show --tree

查看某个依赖的依赖树

poetry show --tree flask

运行py文件

方式一(简单)

无需手动激活环境,直接在虚拟环境中执行脚本,适合 单次运行:

poetry run python 1.py

方式二(推荐)

激活环境,然后运行 .py 文件

激活环境

poetry env activate

执行结果:

& "D:\test\.venv\Scripts\activate.ps1"

执行上面的脚本:

D:\test\.venv\Scripts\activate.ps1

执行结果:

(poetry-py3.10) PS D:\test>

命令提示符有前缀:(poetry-py3.10),说明激活环境成功

运行 .py 文件

python main.py

退出环境

deactivate

其他

删除虚拟环境

poetry env remove python

项目发给其他人

将 Poetry 项目,发给其他人,其他人可以通过以下步骤,快速建立虚拟环境、安装依赖并运行程序,全程无需手动管理环境依赖:

1.安装Python

2.安装poetry

3.安装虚拟环境、依赖

Poetry 会自动根据 pyproject.toml 和 poetry.lock 创建虚拟环境、并安装所有依赖,执行下面命令:

poetry install

报错

安装虚拟环境、依赖时,可能会报错:README.md 不存在,手动创建该文件即可

https://blog.csdn.net/weixin_42871919/article/details/137125544


原文出处:/show_1GW1EQAoseV5.html