如何在矩池云使用 Poetry 管理项目环境
官网介绍:Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
https://python-poetry.org/docs/
Poetry 是 Python 中用于依赖管理和打包的工具。它允许您声明项目所依赖的库,并且它将为您管理(安装/更新)它们。
本文将带大家在矩池云上安装并使用 Poetry 管理项目环境,默认你已经在矩池云上租用了一台机器,如果不知道如何在矩池云租用服务器,可以查看矩池云新手入门教程。
安装Poetry
pip install poetry

创建一个poetry项目目录
首先我们进入 /home 目录中,然后执行poetry new指令,即可新建一个poetry项目,默认包含下面几部分。
cd /home
poetry new my-project
cd my-project
tree

my-project
├── README.rst # 项目说明
├── my_project # 项目文件目录
│ └── __init__.py
├── pyproject.toml # poetry配置文件 重要
└── tests # 测试文件
├── __init__.py
└── test_my_project.py
上面目录结构中,最重要的是pyproject.toml,里面默认包含了下面内容:
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
- tool.poetry 记录项目名称、版本、基本描述和作者
- tool.poetry.dependencies 记录项目依赖工具和版本,比如python
- tool.poetry.dev-dependencies 记录项目依赖的python包
- build-system 记录Poetry环境构建工具
poetry创建、进入虚拟环境
- 创建虚拟环境 poetry env use 本地python解释器路径
(myconda) root@c6854bdc088b:/home/my-project# poetry env use /root/miniconda3/envs/myconda/bin/python
Creating virtualenv my-project-zjY4rh4o-py3.8 in /root/.cache/pypoetry/virtualenvs
Using virtualenv: /root/.cache/pypoetry/virtualenvs/my-project-zjY4rh4o-py3.8
- 查看虚拟环境基本信息
(myconda) root@c6854bdc088b:/home/my-project# poetry env info
Virtualenv
Python: 3.8.2
Implementation: CPython
Path: /root/.cache/pypoetry/virtualenvs/my-project-zjY4rh4o-py3.8
Valid: True
System
Platform: linux
OS: posix
Python: /root/miniconda3/envs/myconda
- 进入虚拟环境
(myconda) root@c6854bdc088b:/home/my-project# poetry shell
Spawning shell within /root/.cache/pypoetry/virtualenvs/my-project-zjY4rh4o-py3.8
sh-4.4# . /root/.cache/pypoetry/virtualenvs/my-project-zjY4rh4o-py3.8/bin/activate
(my-project-zjY4rh4o-py3.8) sh-4.4# pip list
Package Version
---------- -------
pip 22.0.4
setuptools 62.1.0
wheel 0.37.1
(my-project-zjY4rh4o-py3.8) sh-4.4#
poetry常用指令
- 安装第三方包
进入虚拟环境后,我们可以直接pip innstall 包名 安装自己需要的第三方包,不过这样安装包不会记录到pyproject.toml中。
# poetry shell 进入虚拟环境后,可以直接pip install 包名安装
(my-project-zjY4rh4o-py3.8) sh-4.4# pip install pandas
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting pandas
Downloading https://mirrors.aliyun.com/pypi/packages/12/07/e82b5de
...
Successfully installed numpy-1.22.3 pandas-1.4.2 python-dateutil-2.8.2 pytz-2022.1 six-1.16.0
(my-project-zjY4rh4o-py3.8) sh-4.4# pip list
Package Version
--------------- -------
numpy 1.22.3
pandas 1.4.2
pip 22.0.4
python-dateutil 2.8.2
pytz 2022.1
setuptools 62.1.0
six 1.16.0
wheel 0.37.1
不进入虚拟环境,我们可以通过poetry add 包名来安装,同时会生成一个poetry.lock文件,记录安装包相关依赖。
# 不进入虚拟环境
(myconda) root@cd90f1a3f442:/home/my-project# poetry add pendulum@latest
Using version ^2.1.2 for pendulum
Updating dependencies
Resolving dependencies... (59.4s)
Writing lock file
Package operations: 10 installs, 0 updates, 0 removals
• Installing pyparsing (3.0.8)
• Installing attrs (21.4.0)
• Installing more-itertools (8.12.0)
• Installing packaging (21.3)
• Installing pluggy (0.13.1)
• Installing py (1.11.0)
• Installing pytzdata (2020.1)
• Installing wcwidth (0.2.5)
• Installing pendulum (2.1.2)
• Installing pytest (5.4.3)
- 查看安装的包依赖关系 poetry show -t
(myconda) root@cd90f1a3f442:/home/my-project# poetry show -t
pendulum 2.1.2 Python datetimes made easy
├── python-dateutil >=2.6,<3.0
│ └── six >=1.5
└── pytzdata >=2020.1
pytest 5.4.3 pytest: simple powerful testing with Python
├── atomicwrites >=1.0
├── attrs >=17.4.0
├── colorama *
├── more-itertools >=4.0.0
├── packaging *
│ └── pyparsing >=2.0.2,<3.0.5 || >3.0.5
├── pluggy >=0.12,<1.0
├── py >=1.5.0
└── wcwidth *
- 移除安装的第三方包 poetry remove 包名,移除指定第三方包的同时会卸载相关依赖包。
(myconda) root@cd90f1a3f442:/home/my-project# poetry remove pendulum
Updating dependencies
Resolving dependencies... (0.1s)
Writing lock file
Package operations: 0 installs, 0 updates, 4 removals
• Removing pendulum (2.1.2)
• Removing python-dateutil (2.8.2)
• Removing pytzdata (2020.1)
• Removing six (1.16.0)
- 导出项目依赖
poetry export -f requirements.txt --output requirements.txt
常用参数:
--format (-f): 导出文件格式,目前仅支持requirements.txt
--output (-o): 导出文件名称
- 查看poetry全局配置 poetry config --list
(myconda) root@cd90f1a3f442:/home/my-project# poetry config --list
# poetry缓存目录
cache-dir = "/root/.cache/pypoetry"
experimental.new-installer = true
installer.parallel = true
# 默认 true,进行poetry add/install 时如果没有虚拟环境,就创建一个,如果为 false,没有虚拟环境就安装到系统环境中
virtualenvs.create = true
# 在项目根目录创建虚拟环境
virtualenvs.in-project = null
# 虚拟环境目录
virtualenvs.path = "{cache-dir}/virtualenvs" # /root/.cache/pypoetry/virtualenvs
- 设置poetry全局配置值 poetry config virtualenvs.create false --local
(myconda) root@cd90f1a3f442:/home/my-project# poetry config virtualenvs.create false --local
(myconda) root@cd90f1a3f442:/home/my-project# poetry config --list
cache-dir = "/root/.cache/pypoetry"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = false
virtualenvs.in-project = null
virtualenvs.path = "{cache-dir}/virtualenvs" # /root/.cache/pypoetry/virtualenvs
执行后,会在项目目录下生成一个poetry.toml文件,记录了修改的配置名和对应的值,--local表示这是修改本项目的配置。
更多相关指令
poetry install # 通过项目目录中的pyproject.toml安装相关依赖
poetry check # 检查依赖关系
poetry search requests # 查找可用的相关包信息
poetry lock # 更新 pyproject.toml 中依赖版本,加--no-update只更lock新文件,不更新包版本
poetry version # 查看poetry版本
...
更多使用方法,可以阅读学习官方文档:https://python-poetry.org/docs/cli
如何在矩池云使用 Poetry 管理项目环境的更多相关文章
- 矩池云上编译安装dlib库
方法一(简单) 矩池云上的k80因为内存问题,请用其他版本的GPU去进行编译,保存环境后再在k80上用. 准备工作 下载dlib的源文件 进入python的官网,点击PyPi选项,搜索dilb,再点击 ...
- 矩池云上使用nvidia-smi命令教程
简介 nvidia-smi全称是NVIDIA System Management Interface ,它是一个基于NVIDIA Management Library(NVML)构建的命令行实用工具, ...
- 矩池云助力科研算力免费上"云",让 AI 教学简单起来
矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验,和高性价比的GPU集群资源.而且对同学们比较友好,会经常做一些大折扣的活动,最近双十一,全场所有的RTX 2070.Platin ...
- 矩池云 | 高性价比的GPU租用深度学习平台
矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验.在性价比上,我们以 2080Ti 单卡为例,36 小时折扣后的价格才 55 元,每小时单价仅 1.52 元,属于全网最低价.用户 ...
- 在矩池云使用Disco Diffusion生成AI艺术图
在 Disco Diffusion 官方说明的第一段,其对自身是这样定义: AI Image generating technique called CLIP-Guided Diffusion.DD ...
- 矩池云里查看cuda版本
可以用下面的命令查看 cat /usr/local/cuda/version.txt 如果想用nvcc来查看可以用下面的命令 nvcc -V 如果环境内没有nvcc可以安装一下,教程是矩池云上如何安装 ...
- 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境
这是 CVPR 2018 的一篇少样本学习论文:Learning to Compare: Relation Network for Few-Shot Learning 源码地址:https://git ...
- 矩池云上安装yolov4 darknet教程
这里我是用PyTorch 1.8.1来安装的 拉取仓库 官方仓库 git clone https://github.com/AlexeyAB/darknet 镜像仓库 git clone https: ...
- 用端口映射的办法使用矩池云隐藏的vnc功能
矩池云隐藏了很多高级功能待用户去挖掘. 租用机器 进入jupyterlab 设置vnc密码 VNC_PASSWD="userpasswd" ./root/vnc_startup.s ...
- 矩池云上安装ikatago及远程链接教程
https://github.com/kinfkong/ikatago-resources/tree/master/dockerfiles 从作者的库中可以看到,该程序支持cuda9.2.cuda10 ...
随机推荐
- Docker容器基础入门认知-Cgroup
在上一篇说完 namespace 给容器技术提供了隔离之后,我们在介绍一下容器的"限制"问题 也许你会好奇,我们不是已经通过 Linux Namespace 给容器创建了一个容器了 ...
- js文件下载blob
使用axios文件下载 if (tableDataSource.selectedRowKeys.length > 0) { //本次请求你携带token axios.defaults.heade ...
- file文件转为base64
场景描述 在工作中,我们经常需要进行文件上传. 比如在进行图片上传的时候, 我们需要将上传的图片展示出来. 这个时候我们就需要将file文件转化为base64. 将file文件转化为base64 // ...
- Go-操作redis/redigo
目录 Go-操作redis 安装 连接 使用 设置key过期时间 批量获取mget.批量设置mset 列表操作 hash操作 Pipelining(管道) redis发布会订阅模式 事务操作 万能操作 ...
- docker 镜像导出和导入(适用于内网无法拉镜像的问题)
1.在外网将镜像从指定的仓库拉下来 docker pull consul 现在已将consul镜像拉到了可连外网的服务器 2.将镜像把包到指定的tar文件中 docker save consul:l ...
- .net web发布至阿里云服务器
1.发 布网站第一步:右键网站主项目,选择 发布网站.如下图 第二步 填写发布网站的相关配置,选择配置文件,新建配置文件 第三步 选择发布的文件存放的位置 第四步,选择Release 再点击下一步,点 ...
- 手撕Vue-实现计算属性
前言 经过上一篇的学习, 完成了将数据代理到了 Nue 的实例上方,这个我们已经撕完了.接下来要实现的是计算属性,计算属性的实现原理是通过 Object.defineProperty() 来实现的,我 ...
- 数据共享Manager(Python)
from multiprocessing import Process,Manager,Lock def change_dic(dic,lock): with lock: dic['count'] - ...
- CF763E Timofey and our friends animals题解
题目链接:CF 或者 洛谷 简单来说就是求 \([l,r]\) 这些点都存在的情况下,连通块的数量,看到七秒时限,而且每个点相连的边数很少,可以想到离线下来使用莫队类的算法解决 连通块问题,一般可以考 ...
- SqlDapperEasyUtil:.NET CORE下的Dapper封装操作类
之前介绍了基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,这个在.NET FX下还是比较好用的,现在都流行.NET CORE,故我这边再次进行精简修改,以便适应.NET ...