众所周知,Python 因为有着强大的第三方包扩展,所以开发应用非常的便捷,但是不同包的版本依赖问题是一个很头痛的问题,为此 Python 出现了各种环境管理工具,通过它们我们可以隔离出一个独立的 Python 环境,也就是不同项目采用不同的环境。
Python人工智能 - 一小时全面认识Python爬虫开发 - 创客学院直播室www.makeru.com.cn Python人工智能 - python 人工智能-神经网络 - 创客学院直播室www.makeru.com.cn
Python 界常见的虚拟环境 管理工具有 virtualenv 和 pipenv ,二者各有千秋:
- virtualenv 不能动态更新 requirements.txt,所以pipenv 诞生了;
- pipenv 可以看成是 pip+virtualenv 两款工具的合体,它使用 Pipfile 替代原来 requirements.txt 记录依赖包信息 ;
- pipenv 如何使用可以参考之前写的(再见 virtualenv!K神教你轻松管理多个Python环境 )
01.神器poetry
poetry 的依赖处理效果更强大一些。poetry 在遇到依赖限定条件时,poetry 会尝试找出解决方案,找到可以满足所有相互依赖关系的要求,然后成功安装依赖包。
poetry 卸载包的时候,直接卸载孤立的子依赖,不需要像 pipenv 那样需要再执行 pipenv clean 。
02.如何安装
poetry 提供了一个自定义安装程序,该安装程序将通过供应其依赖项来安装与系统其余部分隔离。这是官方推荐的 poetry 安装方法。
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
如果不用代理, 执行 curl 指令某些地区可能会很慢。也可以用 pip 安装(不过 poetry 官方文档不建议这么做,因为有可能会造成依赖冲突):
pip install poetry
安装之后可以使用下面指令查看安装是否成功
study_poetry poetry --version
poetry version 1.1.4 # 显示poetry安装的版本 03.poetry 基本配置
1).在已有项目使用 poetry
如果你是在一个已有的项目里使用 poetry,你只需要执行 poetry init 命令来创建一个 pyproject.toml 文件:
poetry init
根据它的提示输入你的项目信息,不确定的内容就按下 Enter 使用默认值,后续也可以手动更新。指定依赖的环节可以跳过,手动安装会更高效一点。
2).创建一个新的 Python 项目
如果你想创建一个新的 Python 项目,使用 poetry new <项目名称> 命令可以创建一个项目模板:
3).更换国内镜像源
在 pyproject.toml 配置文件中添加国内镜像源地址配置,提高下载速度。
04.常见的操作示例
1).安装和卸载Python第三方包
安装第三方包语法和 pipenv 指令类似, 执行 poetry add 包名即可,安装 requests 的指令如下:
在开发环境下我们要安装 pytest 这样的库,这些在生产环境其实是用不上的,所以没必要记录到 pyproject.toml 中,那么我们在安装某个包的时候加个参数 —dev,表示只安装在开发环境,安装包记录是在[tool.poetry.dev-dependencies]部分。
在开发环境下我们要安装 pytest 这样的库,这些在生产环境其实是用不上的,所以没必要记录到 pyproject.toml 中,那么我们在安装某个包的时候加个参数 —dev,表示只安装在开发环境,安装包记录是在[tool.poetry.dev-dependencies]部分。
使用 remove 即可卸载指定的第三方包,例如执行 poetry remove django 卸载 django
2).查看项目环境所安装的第三方库
执行 poetry show —tree 就会列出你所安装的第三方包的名称、版本信息以及第三方包的简介,还能查看各个库之间的依赖关系。
3).运行 Python 脚本
切换到项目中 pyproject.toml 同级目录下, 执行 peotry run python 脚本文件即可。
4).显示虚拟环境信息
执行 poetry env list --full-path 即可查看虚拟环境所在的绝对路径
执行 peotry env info 查看虚拟环境的详细信息
05.Pycharm 中使用 poetry
找到虚拟环境文件夹所在位置,并选中 bin 目录下的 Python 后,就可以用 Pycharm 引入虚拟环境了
poetry 提供了一套当前最为完善的 Python 依赖包管理解决方案。相对与当前的pip、pipenv具有很多显而易见的优势,如果喜欢尝鲜,可以尝试使用 poetry 替换 pip+virtualenv 或者 pipenv 进行依赖包管理和虚拟环境管理。
有兴趣的小伙伴,可以安装试一下哦!欢迎在留言区点评,吱一声哈!