终于可以摆脱 Pipenv 这坑货了

这是「进击的Coder」的第 459 篇技术分享
作者:写代码的明哥
来源:Python编程时光


阅读本文大概需要 5 分钟。



大家好,有读者留言,希望我整一期 poetry 的,今天,它来了。

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

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

# 1. 安装 poetry

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

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

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

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

$ pip install --user poetry

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

$ poetry --version
Poetry version 1.1.4

# 2. 创建项目

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

$ poetry init

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

$ poetry new demo-priject

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

$ tree demo-priject
demo-priject
├── README.rst
├── demo_priject
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_demo_priject.py

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

# 3. 创建虚拟环境

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

$ poetry install

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

终于可以摆脱 Pipenv 这坑货了

# 4. 使用虚拟环境

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

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

$ poetry run <commands>

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

$ poetry run pip list

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

$ poetry run python app.py

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

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

$ poetry shell

# 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/"


终于可以摆脱 Pipenv 这坑货了

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。


终于可以摆脱 Pipenv 这坑货了

看完记得关注@进击的Coder
及时收看更多好文
↓↓↓


崔庆才的「进击的Coder」知识星球已正式成立,感兴趣的可以查看《我创办了一个知识星球》了解更多内容,欢迎您的加入:


终于可以摆脱 Pipenv 这坑货了


好文和朋友一起看~

原文始发于微信公众号(进击的Coder):终于可以摆脱 Pipenv 这坑货了

链接:https://bbbe.top/archives/706.html
来源:随风的博客
文章版权归作者所有,未经允许请勿转载。
本网站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本网站不承担任何责任。
本声明未涉及的问题参见国家有关法律法规,当本声明与国家法律法规冲突时,以国家法律法规为准。
本文仅供学习参考,请勿用于违法用途。 若根据文章内容操作遭受任何损失,请自行承担责任。
THE END
分享
二维码
打赏
< <上一篇
下一篇>>