介绍
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
