终于可以摆脱 Pipenv 这坑货了

开发 前端
原来一直轻量使用的我,一直没有感觉到 pipenv 的各种问题,咱也不知道经过这几年的发展,pipenv 是否有所改进?不过我想对于曾经 "深受其害" 的用户来说,可能早就投入了 poetry 的怀抱。

[[416484]]

大家好,我是明哥。

之前在介绍一些管理 Python 虚拟环境的工具时,比如 pipenv,virtualenv 等,总有读者留言,希望我整一期 poetry 的。

在接触 poetry 之前,我以为 pipenv 已经是我心目中最理想的虚拟环境工具,直到 19年 看过@李辉 的一篇文章(http://greyli.com/do-not-use-pipenv/)才让我开始动摇,原来一直轻量使用的我,一直没有感觉到 pipenv 的各种问题,咱也不知道经过这几年的发展,pipenv 是否有所改进?不过我想对于曾经 "深受其害" 的用户来说,可能早就投入了 poetry 的怀抱。

废话不多说,直接上干货。

# 1. 安装 poetry

poetry提供多种安装方式,个人推荐从以下2种方式中选择:

方式一:(推荐)使用在线脚本进行安装,是最为推荐的安装方式

  1. $ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python 

方式二:(pip) 官方不建议这么做,因为有可能会造成依赖冲突,可以考虑用 pipx 或 pipsi

  1. $ pip install --user poetry 

安装后,可以使用如下命令检测是否可用

  1. $ poetry --version 
  2. Poetry version 1.1.4 

# 2. 创建项目

如果你是在一个已有的项目里使用 Poetry,你只需要执行 poetry init 命令来创建一个 pyproject.toml 文件:

  1. $ poetry init 

而如果是新建 一个项目,可以使用这个命令

  1. $ poetry new demo-priject 

运行完后,在当前目录下就会多一个 demo-project 的目录,这个目录下的文件结构如下

  1. $ tree demo-priject 
  2. demo-priject 
  3. ├── README.rst 
  4. ├── demo_priject 
  5. │   └── __init__.py 
  6. ├── pyproject.toml 
  7. └── tests 
  8.     ├── __init__.py 
  9.     └── test_demo_priject.py 

如果要把项目代码放入到 src 目录下,在创建项目时,可以加上 --src 参数。

# 3. 创建虚拟环境

使用 poetry install 命令创建虚拟环境(确保当前目录有 pyproject.toml 文件):

  1. $ poetry install 

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

# 4. 使用虚拟环境

创建虚拟环境后,如果想要在虚拟环境下执行命令,比如去执行脚本,去使用 pip list 等等。

可以在项目目录下,使用如下命令

 

  1. $ poetry run <commands> 

比如我查看该虚拟环境中安装了哪些包

  1. $ poetry run pip list 

再比如我想在该虚拟环境下执行 app.py

  1. $ poetry run python app.py 

每次在虚拟环境下做点啥事,命令前面都要加上 poetry run,有点太麻烦了。

这时可以使用下面这条命令,直接激活当前的虚拟环境

  1. $ poetry shell 

# 5. 包的管理

安装包

 

  1. $ poetry add <pkg> 

添加 --dev 参数可以指定为开发依赖

  1. $ poetry add pytest --dev 

查看所有安装的依赖包

  1. $ poetry show 

加上 --tree 可以查看他们的依赖关系

  1. $ poetry show --tree 

加上 --outdated 可以查看可以更新的依赖

  1. $ poetry show --outdated 

如果要更新依赖可以执行这个命令

  1. # 更新全部 
  2. $ poetry update 
  3.  
  4. # 更新某个依赖 
  5. $ poetry update foo 

想卸载某个包,用这个命令

  1. $ poetry remove foo 

# 6. 常用配置

Poetry 的配置存储在单独的文件中,比 Pipenv 设置环境变量的方式要方便一点。配置通过 poetry config 命令设置,比如下面的命令可以写入 PyPI 的账号密码信息:

  1. $ poetry config http-basic.pypi username password 

下面的命令设置在项目内创建虚拟环境文件夹:

  1. $ poetry config settings.virtualenvs.in-project true 

另一个常用的配置是设置 PyPI 镜像源,以使用豆瓣提供的 PyPI 镜像源为例,你需要在 pyproject.toml 文件里加入这部分内容:

  1. [[tool.poetry.source]] 
  2. name = "douban" 
  3. url = "https://pypi.doubanio.com/simple/" 
本文转载自微信公众号「Python编程时光」,可以通过以下二维码关注。转载本文请联系Python编程时光公众号。

 

责任编辑:武晓燕 来源: Python编程时光
相关推荐

2021-07-29 20:29:36

Linux c 代码Java

2021-09-27 09:19:13

微信关怀模式 腾讯

2023-04-03 08:56:38

系统重构应用

2023-04-07 07:20:05

Rust系统项目

2023-04-14 07:49:26

iOS安卓

2020-11-23 06:50:31

微信原视频移动应用

2024-03-18 08:53:07

SubListOOMList

2018-05-04 14:11:34

SwiftPython开发

2020-06-12 11:03:22

Python开发工具

2021-01-08 10:20:16

大数据网络数据

2019-07-24 09:59:21

iPhoneiOS 12.4数据迁移

2018-02-25 10:49:49

GboardiOS平台Android

2021-03-22 09:27:44

PythonEXCEL热点推荐

2011-07-19 09:41:33

2022-09-08 10:13:41

Web3

2022-12-23 08:37:16

BigDecimaljava

2020-02-23 16:33:02

GitHub印度子公司

2022-04-28 11:04:27

架构微服务技术

2024-04-10 08:39:56

BigDecimal浮点数二进制

2023-05-08 16:16:50

点赞
收藏

51CTO技术栈公众号