当前位置: 首页 > 科技观察

我终于可以摆脱Pipenv骗局了

时间:2023-03-15 20:49:59 科技观察

大家好,我是明哥。当我介绍一些管理Python虚拟环境的工具,比如pipenv、virtualenv等时,总有读者留言,希望我能写出一整集的诗篇。在接触诗歌之前,我以为pipenv已经是我心目中最理想的虚拟环境工具了,直到19年看了@李辉的一篇文章(http://greyli.com/do-not-use-pipenv/)让我开始动摇了。我一直在轻度使用,从来没有感觉到pipenv的各种问题。不知道经过几年的发展,pipenv有没有进步?不过我想,对于那些深受其害的用户来说,可能已经把诗投怀送抱了。话不多说,我们直接上干货。#1.安装诗歌诗歌提供了多种安装方式。个人推荐选择以下两种方式:方式一:(推荐)使用在线脚本安装,最推荐的安装方式是$curl-sSLhttps://raw.githubusercontent。com/python-poetry/poetry/master/get-poetry.py|Python方法二:(pip)官方不推荐这个,因为可能会造成依赖冲突,安装后可以考虑使用pipx或者pipsi$pipinstall--userpoetry,可以使用如下命令查看是否可用$poetry--versionPoetryversion1.1.4#2.创建项目如果在已有项目中使用Poetry,只需要执行poetryinit命令创建一个pyproject。toml文件:$poetryinit而如果是新建工程,可以使用这个命令$poetrynewdemo-priject运行后,当前目录下会有一个demo-project目录,该目录下的文件结构如下$treedemo-prijectdemo-priject├──README.rst├──demo_project│└──__init__.py├──pyproject.toml└──tests├──__init__.py└──test_demo_priject.py如果你想把项目代码放到src目录下,创建工程,可以加上--src参数。#3.创建虚拟环境使用poetryinstall命令创建虚拟环境(确保当前目录下有pyproject.toml文件):$poetryinstall该命令会读取pyproject.toml中的所有依赖(包括开发依赖)并安装它们,如果您不想安装开发依赖项,可以附加--no-dev选项。如果项目根目录下有poetry.lock文件,则将安装该文件中列出的依赖项的锁定版本。如果执行添加/删除命令时没有检测到虚拟环境,则会自动为当前目录创建一个虚拟环境。#4.使用虚拟环境创建虚拟环境后,如果想在虚拟环境中执行命令,比如执行脚本,使用piplist等。您可以在项目目录中使用以下命令$poetryrun。例如,我可以查看虚拟环境中安装了哪些包。$poetryrunpiplist比如我想在虚拟环境中执行app.py。$poetryrunpythonapp.py每次在虚拟环境中做点什么,命令前都要加上poetryrun,有点太麻烦了。这时候可以使用如下命令直接激活当前虚拟环境$poetryshell#5.包管理安装包$poetryadd添加--dev参数可以指定为开发依赖$poetryaddpytest--dev查看所有安装的依赖package$poetryshowplus--tree可以查看自己的依赖$poetryshow--treeplus--outdated可以查看可以更新的依赖$poetryshow--outdated如果要更新依赖,可以执行这个命令#Updateall$poetryupdate#Update一个依赖$poetryupdatefoo要卸载某个包,使用这个命令$poetryremovefoo#6.常用配置Poetry配置存放在一个单独的文件中,比Pipenv设置环境变量的方式方便一点。配置是通过poetryconfig命令设置的。比如下面的命令可以写入PyPI的账号密码信息:$poetryconfighttp-basic.pypiusernamepassword下面的命令设置为在项目中创建一个虚拟环境文件夹:$poetryconfigsettings.virtualenvs.in-projecttrue另外一个常用的配置是设置PyPI镜像源。以豆瓣提供的PyPI镜像源为例,需要在pyproject.toml文件中添加:[[tool.poetry.source]]name="douban"url="https://pypi.doubanio.com/simple/》本文转载自微信公众号《Python编程时间》,可通过以下二维码关注。转载本文请联系Python编程时间公众号。