python

1. 安装 poetry

poetry提供多种安装方式,个人推荐从以下2种方式中选择:
方式一:(推荐)使用在线脚本进行安装,是最为推荐的安装方式
curl -sSL https://install.python-poetry.org | python3 -
方式二:(pip) 官方不建议这么做,因为有可能会造成依赖冲突,可以考虑用 pipx 或 pipsi
$ pip install --user poetry
安装后,可以使用如下命令检测是否可用
$ poetry --version Poetry version 1.1.4

2. 创建项目

  1. 在一个已有的项目里使用 Poetry
    1. 如果是clone的项目并且项目中使用了poetry,那么只需要创建虚拟环境即可
      1. 进入项目的根目录(即包含 pyproject.toml 文件的目录)
      2. 使用命令 poetry install 安装依赖
    2. 如果是没有使用 poetry 的项目
      1. 你只需要执行 poetry init 命令来创建一个 pyproject.toml 文件:
  1. 新建 一个项目
    1. 使用命令 poetry new demo-priject 运行完后,在当前目录下就会多一个 demo-project 的目录,这个目录下的文件结构如下
      如果要把项目代码放入到 src 目录下,在创建项目时,可以加上 --src 参数。
      $ tree demo-priject demo-priject ├── README.rst ├── demo_priject │ └── __init__.py ├── pyproject.toml ├── src (添加src参数) │ └── ...py └── tests ├── __init__.py └── test_demo_priject.py

3. 创建虚拟环境

使用 poetry install 命令创建虚拟环境(确保当前目录有 pyproject.toml 文件):
$ poetry install
这个命令会读取 pyproject.toml 中的所有依赖(包括开发依赖)并安装,如果不想安装开发依赖,可以附加 --no-dev 选项。如果项目根目录有 poetry.lock 文件,会安装这个文件中列出的锁定版本的依赖。如果执行 add/remove 命令的时候没有检测到虚拟环境,也会为当前目录自动创建虚拟环境。
notion imagenotion image

4. 使用虚拟环境

  • 如果想要在虚拟环境下执行命令,比如去执行脚本,去使用 pip list 等等。
      1. 激活当前的虚拟环境 poetry shell
      1. 在每个命令前加上 poetry run ,如:
        1. 可以在项目目录下,使用如下命令 poetry run <commands>
        2. 比如我查看该虚拟环境中安装了哪些包 poetry run pip list
        3. 在该虚拟环境下执行 app.py 文件 poetry run python app.py
  • 查看虚拟环境信息 poetry env info
  • 查看当前虚拟环境的完整路径 poetry env list --full-path

5. 包的管理

  • 安装包 poetry add <pkg>
    • 添加 --dev 参数可以指定为开发依赖 poetry add pytest --dev
  • 查看所有安装的依赖包 poetry show
    • 加上 --tree 可以查看他们的依赖关系 poetry show --tree
    • 加上 --outdated 可以查看可以更新的依赖 poetry show --outdated
  • 更新依赖
    • 更新全部 poetry update
    • 更新某个依赖 poetry update foo
  • 卸载某个包 poetry remove foo

6. 常用配置

Poetry 的配置存储在单独的文件中,比 Pipenv 设置环境变量的方式要方便一点。配置通过 poetry config 命令设置,比如下面的命令可以写入 PyPI 的账号密码信息:
$ poetry config http-basic.pypi username password
下面的命令设置在项目内创建虚拟环境文件夹:
$ poetry config settings.virtualenvs.in-project true
另一个常用的配置是设置 PyPI 镜像源,以使用豆瓣提供的 PyPI 镜像源为例,你需要在 pyproject.toml 文件里加入这部分内容:
[[tool.poetry.source]] name = "douban" url = "https://pypi.doubanio.com/simple/"
不过经过测试 Poetry 会使用 pip.ini 设置的 PyPI 镜像,而且豆瓣的源好像很久没更新了(创建虚拟环境安装的默认依赖里 importlib-metadata==0.20 找不到),这篇文章列出了一些其他国内的 PyPI 源。

7. 参考文章

对于本文内容有任何疑问, 可与我联系.