官网介绍: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 管理项目环境的更多相关文章

  1. 矩池云上编译安装dlib库

    方法一(简单) 矩池云上的k80因为内存问题,请用其他版本的GPU去进行编译,保存环境后再在k80上用. 准备工作 下载dlib的源文件 进入python的官网,点击PyPi选项,搜索dilb,再点击 ...

  2. 矩池云上使用nvidia-smi命令教程

    简介 nvidia-smi全称是NVIDIA System Management Interface ,它是一个基于NVIDIA Management Library(NVML)构建的命令行实用工具, ...

  3. 矩池云助力科研算力免费上"云",让 AI 教学简单起来

    矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验,和高性价比的GPU集群资源.而且对同学们比较友好,会经常做一些大折扣的活动,最近双十一,全场所有的RTX 2070.Platin ...

  4. 矩池云 | 高性价比的GPU租用深度学习平台

    矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验.在性价比上,我们以 2080Ti 单卡为例,36 小时折扣后的价格才 55 元,每小时单价仅 1.52 元,属于全网最低价.用户 ...

  5. 在矩池云使用Disco Diffusion生成AI艺术图

    在 Disco Diffusion 官方说明的第一段,其对自身是这样定义: AI Image generating technique called CLIP-Guided Diffusion.DD ...

  6. 矩池云里查看cuda版本

    可以用下面的命令查看 cat /usr/local/cuda/version.txt 如果想用nvcc来查看可以用下面的命令 nvcc -V 如果环境内没有nvcc可以安装一下,教程是矩池云上如何安装 ...

  7. 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境

    这是 CVPR 2018 的一篇少样本学习论文:Learning to Compare: Relation Network for Few-Shot Learning 源码地址:https://git ...

  8. 矩池云上安装yolov4 darknet教程

    这里我是用PyTorch 1.8.1来安装的 拉取仓库 官方仓库 git clone https://github.com/AlexeyAB/darknet 镜像仓库 git clone https: ...

  9. 用端口映射的办法使用矩池云隐藏的vnc功能

    矩池云隐藏了很多高级功能待用户去挖掘. 租用机器 进入jupyterlab 设置vnc密码 VNC_PASSWD="userpasswd" ./root/vnc_startup.s ...

  10. 矩池云上安装ikatago及远程链接教程

    https://github.com/kinfkong/ikatago-resources/tree/master/dockerfiles 从作者的库中可以看到,该程序支持cuda9.2.cuda10 ...

随机推荐

  1. [转帖]解析Linux gcore: 揭示程序内存捕获的秘密(linuxgcore)

    https://www.dbs724.com/133618.html Linux gcore 是一种在Linux系统中使用命令行工具捕获进程内存内容的方法.它允许程序员制定程序的一个内存快照,从而帮助 ...

  2. [转帖]关于F5负载均衡你认识多少?

    https://www.cnblogs.com/xiexun/p/10718348.html 网络负载均衡(load balance),就是将负载(工作任务)进行平衡.分摊到多个操作单元上进行执行,例 ...

  3. Mysql 安装文件下载

    今天上了mysql的官方网站想下载mysql数据库 https://www.mysql.com 注册之后发现 出口许可证的问题 这里fxxk 一下川建国的老婆和女儿 感觉比较抑郁 然后就去百度了下 发 ...

  4. canvas操作图片像素点保证你看的明明白白

    开场白 今天遇到一个场景:就是更改一个图片的颜色: 当听到这个.我直呼好家伙:这个是要上天了呀. 但是仔细一思考:借助canvas好像也能实现: 于是下来研究了一下,并不难: 我们下面来看看怎么实现的 ...

  5. echarts去掉y轴线、设置x轴线的颜色、x轴文字颜色

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 离开页面关闭video标签

    <video src="./play.mp4" id="maskmore_1" controls="controls" autopla ...

  7. 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析

    逆向目标 猿人学 - 反混淆刷题平台 Web 第二题:js 混淆,动态 cookie 目标:提取全部 5 页发布日热度的值,计算所有值的加和 主页:https://match.yuanrenxue.c ...

  8. C语言输出键盘

    使用printf()函数输出样式 #include <stdio.h> int main() { printf("┌───┬───┬───┬───┬───┬───┬───┬─── ...

  9. statsvn只支持到svn1.3

    怎样找出svn修改次数最多的文件? 我想统计配置表中,那个配置文件修改次数最多,但经过实践发现statsvn只支持到1.3的版本. 通过svn的命令行接口,把提交记录保存到xml中,再通过自己写代码解 ...

  10. https、UDP的加密原理,其它传输层的同理

    总结: 1.若应用需要使用http协议,那么就直接使用 https + 购买证书的方式. 2.若项目需要使用udp协议(浏览器不支持udp,所以只能是客户端软件包含APP),那么就需要将公钥内置在AP ...