07 Ubuntu中使用poetry工具管理python环境——巨详细!!!

由于conda和ros2的环境实在太容易冲突了。我真的不敢再使用conda,着实是有些搞不明白这解释器之间的关系。

conda的卸载和ros2的安装暂不赘述,下面着重来说如何在Ubuntu中使用poetry进行包管理及遇到的问题。

1 安装poetry

由于在有写入权限的限制,在Ubuntu中想直接安装一个poetry实在是太困难了,下面介绍几种安装的情况。下面这几个命令先别急着复制安装,我使用的是最后一种。

1.0 官方下载方式

curl -sSL https://install.python-poetry.org | python3 -

1.1 本地用户的临时环境

pip install -i --user  https://pypi.tuna.tsinghua.edu.cn/simple poetry

这个指令将会把poetry安装到当前用户的.local文件夹下,但是遗憾的是没有添加环境变量,我们虽然可以成功安装,但是却不能够使用它。

从理论上来讲,如果我们将./local/bin下的路径添加到终端的环境变量的话,那么我们应该是可以使用poetry命令的。

1.2 sudo命令安装——root用户的临时环境

可以看到,上面的方法中制定了‘--user’参数将包安装到当前用户,如果使用

sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple poetry

来安装的话,那么就会安装到/root/.local下。但是也是没有添加环境变量的。

所以我推荐下面的方法。虽然在你的电脑上直接安装不一定就会有权限限制,但是如果是使用下面这种安装方法那么几乎是必然不会出问题的。毕竟我这前疮百孔的环境都能装(是的,虽然是前前天才重装的系统,但是已经玩脱好几次了)。

1.3 python -m 安装

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple poetry

这样之后应该就可以使用poetry了,但是不是使用poetry,而是使用

python -m poetry

 如果每次都使用这个的话,难免会有些麻烦,这个时候我们就可以使用zsh的别名功能了。

要创建别名,请在终端中执行以下命令:

alias mypt='python -m poetry'

这将创建一个名为mypt的别名,将其映射到python -m poetry命令。 但是这样只能将别名应用到当前终端,要想一直能用,要添加到./zshrc文件中。

要使用别名,请在终端中输入别名名称并按回车键。例如,要使用mypt别名来运行poetry,在终端中执行以下命令:

mypt --version

这将显示poetry的版本号。平常我们也可以使用别名来简化经常使用的命令,或者将复杂的命令映射到易于记忆的名称。

 如果是在bash中的话,那么应该也可以靠软链接达到同样的效果。 

2 使用poetry进行环境管理

2.1 poetry init

poetry init是一个用于创建新Python项目的命令。它会在当前目录中创建一个pyproject.toml文件,该文件包含有关项目的元数据和依赖项的信息。pyproject.toml是poetry项目的核心配置文件,它描述了项目如何构建、测试和运行,并列出了项目所需的依赖项和版本约束条件。下面我们来进行尝试,我在mmdetection的仓库中进行尝试。

可以看到,在初始化之后,这个工具会询问一些信息。

Would you like to define your main dependencies interactively? (yes/no)

poetry init命令的一个提示,询问是否想要交互式地定义项目的主要依赖项。

如果选择回答“yes”,则poetry init命令将向你询问要添加的依赖项。你可以根据需要添加依赖项的名称、版本范围、Git URL或其他信息来添加。就像选择yes之后的情况一样,跟着走就行了。

如果您选择回答“no”,则poetry init命令将使用默认设置创建pyproject.toml文件,并在其中包含一个空的依赖项列表。你可以待会儿使用poetry add命令手动添加依赖项。

 最后,它会生成pyproject.toml文件。

 2.2 poetry install

用下面的命令把toml文件“变现”

poetry install

这将根据 `pyproject.toml` 文件中指定的依赖项安装所需的所有包,以及它们的依赖项。默认情况下,这将在一个名为 `.venv` 的虚拟环境中安装依赖项。如果您需要将依赖项安装到全局环境中,可以使用 `--no-virtualenv` 标志。

运行时首先会爆出位置,方便我以后删了它。

Creating virtualenv mmdetrely-kp0XzG9G-py3.10 in /home/zhaocake/.cache/pypoetry/virtualenvs

如果你要更改虚拟环境的位置,可以使用 `--path` 标志指定自定义路径,例如:

poetry install --path /path/to/custom/venv

这将在 `/path/to/custom/venv` 中创建虚拟环境并安装依赖项。

2.3 poetry shell

使用这个命令激活虚拟环境

 使用shell退出虚拟环境。

而且很离谱的一点是,在下载包的时候,明明看见很多包都下载的是macosx的版本,但是竟然真的可以安装和使用。可能poetry真的是一个很务实的包管理工具吧。

2.4 poetry add

首先,要理解这个命令的参数,就要理解依赖项

在 Poetry 中,有三种类型的依赖项:

  1. 生产依赖项(默认类型):这些是您的项目所必需的依赖项,用于构建和运行项目。
  2. 开发依赖项:这些是用于开发、测试和维护项目的依赖项,例如测试框架、文档生成器等。开发依赖项不会被包含在项目构建中,而是在开发过程中使用。
  3. 可选依赖项:这些是您的项目可以使用但不是必需的依赖项。例如,如果您的项目可以在不同的数据库上运行,则可能存在多个数据库适配器,其中一些是可选的。

该命令的语法为 

poetry add <package>[@<version>] [--dev] [--optional]

其中 <package> 是要添加的依赖包的名称,<version> 是可选的版本号。如果没有指定版本号,Poetry 将使用 ^ 符号自动添加一个版本约束符号。

--dev 标志表示将包添加到开发依赖项中,而不是默认的生产依赖项中。--optional 标志表示将包添加到可选依赖项中。

并且因为在虚拟环境中没有poetry,你需要先推出虚拟环境,再执行命令。执行命令后要重新使用poetry install! 

2.5 poetry update

如果不是使用上面的add修改包,而是直接编辑了toml文件的话,再运行install就会报错了,这个时候要使用的命令是update.

其他

1 poetry换源

由于常规来说下载包速度确实挺慢,所以我们要换源。

依然是熟悉的清华镜像,这个真的好用。

2 安装pytorch

我知道很多看我文章的朋友是要碰pytorch的,别的不说,pytorch作为当前数一数二的深度学习框架,多多少少还是要在这里提一句。

poetry对pytorch的支持目前可并不友好。我的建议是先把虚拟环境创建下来,再把pytorch用pip安装,虽然这样对包的管理很不到位,但也不失为一种解决办法。或者就使用其他的包管理工具也是不错的。

这是一篇整理自issue的可能的pytorch的poetry安装方式,并且我尝试,有在云机器上成功,但是在本地似乎依然有下载一些莫名奇妙的东西的可能。

Poetry安装pytorch || 整理自github项目Poetry下的issue_早上真好的博客-CSDN博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/79482.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32--GPIO

文章目录 GPIO简介GPIO的基本结构GPIO位结构GPIO模式LED和蜂鸣器LED闪烁工程及程序原码代码&#xff1a; 蜂鸣器工程和程序原码代码 传感器光敏传感器控制蜂鸣器工程代码 GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;是通用输入/输出口的简称。它是一种…

GO学习之 函数(Function)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 文章目录 GO系列前言一、什么是…

UNITY3D 虚拟数字人方向,动捕设备测评 VDSuit-Full

我们成功的用它做了线下演出活动。 开发测试视频 VDSuit-Full动捕开发 分别说优点和不足 优点&#xff1a; 人工技术答疑及时 有厂家解答各种疑难杂症&#xff08;工作日一般1小时就得到回复&#xff09; 比如穿戴&#xff0c;使用方法&#xff0c;限制等。 动作整体捕捉效果较…

【使用内网穿透从公网对本地内网Web服务器访问】

公网访问本地内网web服务器【内网穿透】 文章目录 公网访问本地内网web服务器【内网穿透】前言1. 首先安装PHPStudy2.下载一个开源的网页文件3. 选择“创建网站”并将网页内容指向下载好的开源网页文件4. 打开本地网页5. 打开本地cpolar客户端6. 保存隧道设置 生成数据隧道 前言…

SpringCloud深度学习(在更)

微服务简介 微服务是什么&#xff1f; 微服务是一种架构风格&#xff0c;将一个大型应用程序拆分为一组小型、自治的服务。每个服务都运行在自己独立的进程中&#xff0c;使用轻量级的通信机制&#xff08;通常是HTTP或消息队列&#xff09;进行相互之间的通信。这种方式使得…

如何恢复已删除的 PDF 文件 - Windows 11、10

在传输数据或共享专业文档时&#xff0c;大多数人依赖PDF文件格式&#xff0c;但很少知道如何恢复意外删除或丢失的PDF文件。这篇文章旨在解释如何有效地恢复 PDF 文件。如果您身边有合适的数据恢复工具&#xff0c;PDF 恢复并不像看起来那么复杂。 便携式文档格式&#xff08…

栈和队列的实现

Lei宝啊&#xff1a;个人主页&#xff08;也许有你想看的&#xff09; 愿所有美好不期而遇 前言 &#xff1a; 栈和队列的实现与链表的实现很相似&#xff0c;新瓶装旧酒&#xff0c;没什么新东西。 可以参考这篇文章&#xff1a; -------------------------无头单向不循环…

D. Productive Meeting

Example input 8 2 2 3 3 1 2 3 4 1 2 3 4 3 0 0 2 2 6 2 3 0 0 2 5 8 2 0 1 1 5 0 1 0 0 6 output 2 1 2 1 2 3 1 3 2 3 2 3 5 1 3 2 4 2 4 3 4 3 4 0 2 1 2 1 2 0 4 1 2 1 5 1 4 1 2 1 5 2 解析&#xff1a; 贪心&#xff0c;每次选择两个剩余次数最多的人&#xff0c;并…

ad+硬件每日学习十个知识点(24)23.8.4(时序约束,SignalTap Ⅱ)

文章目录 1.建立时间和保持时间2.为什么要建立时序约束&#xff1f;3.SignalTap Ⅱ4.SignalTap Ⅱ使用方法5.HDL的仿真软件&#xff08;modelsim&#xff09;6.阻抗匹配 1.建立时间和保持时间 答&#xff1a; 2.为什么要建立时序约束&#xff1f; 答&#xff1a; 3.Sign…

火力全开!百度文心3.5三大维度、20项指标国内问鼎!

近日&#xff0c;清华大学新闻与传播学院沈阳团队发布《大语言模型综合性能评估报告》&#xff08;下文简称“报告”&#xff09;&#xff0c;报告显示百度文心一言在三大维度20项指标中综合评分国内第一&#xff0c;超越ChatGPT&#xff0c;其中中文语义理解排名第一&#xff…

深度学习——全维度动态卷积ODConv

ODConv(OMNI-DIMENSIONAL DYNAMIC CONVOLUTION)是一种关注了空域、输入通道、输出通道等维度上的动态性的卷积方法&#xff0c;因此被称为全维度动态卷积。 part1. 什么是动态卷积 动态卷积就是对卷积核进行线性加权 第一篇提出动态卷积的文章也是在SE之后&#xff0c;他提出…

14.2.2 【Linux】software, hardware RAID

磁盘阵列分为硬件与软件。所谓的硬件磁盘阵列是通过磁盘阵列卡来达成阵列的目的。磁盘阵列卡上面有一块专门的芯片在处理 RAID 的任务&#xff0c;因此在性能方面会比较好。在很多任务 &#xff08;例如 RAID 5 的同位检查码计算&#xff09; 磁盘阵列并不会重复消耗原本系统的…

Harbor企业镜像仓库部署

目录 一、Harbor 架构构成 二、部署harbor环境 1、安装docker-ce&#xff08;所有主机&#xff09; 2、阿里云镜像加速器 3、部署Docker Compose 服务 4、部署 Harbor 服务 5、启动并安装 Harbor 6、创建一个新项目 三、客户端上传镜像 1、在 Docker 客户端配置操作如下…

微服务——RestClient查询文档

快速入门 返回结果直接把json风格的结果封装为SearchReponse对象返回 public class HotelSearchTest {private RestHighLevelClient client;Testvoid testMatchAll() throws IOException {//1.准备requestSearchRequest request new SearchRequest("hotel");//2.准…

Transformer1.0-预热

一.Encoder encoder:译为编码器&#xff0c;负责将输入序列压缩成指定长度的向量&#xff0c;这个向量就可以堪称是这个序列的语义。然后可进行编码或特征提取等操作 在transformer中encoder由6个相同的层组成&#xff0c;每个层包含 Multi-Head Self-AttentionPosition-Wise …

【Vue】Parsing error: No Babel config file detected for ... vue

报错 Parsing error: No Babel config file detected for E:\Study\Vue网站\实现防篡改的水印\demo02\src\App.vue. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files.             …

GD32F103VE侵入事件

GD32F103VE的TAMPER引脚(PC13)&#xff0c;当PC13输入低电平时&#xff0c;会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用&#xff1f; 一是防止被人开壳&#xff0c;抄袭。二是自毁功能。 直奔主题&#xff0c;多一句就是浪费时间。测试…

Docker快速入门笔记

Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起&#xff0c;它融合了便捷性、灵活性和可移植性&#xff0c;让开发者们欣喜若狂。它就是 Docker&#xff01;无论你是一个初学者&#xff0c;还是一位经验丰富的开发者&#xff0c;都不能错过这个引领技术浪潮的工…

Elastic的下载

文章目录 ElasticSearch的下载扩展1&#xff08;ElasticSearch 与 JDK 版本 适配&#xff09;扩展2&#xff08;访问 http://192.168.1.200:9200 没有显示信息&#xff09;扩展3&#xff08;免密登录&#xff09; ElasticSearch的下载 官方下载网址&#xff1a;https://www.el…

maven install命令:将包安装在本地仓库,供本地的其它工程或者模块依赖

说明 有时候&#xff0c;自己本地的maven工程依赖于本地的其它工程&#xff0c;或者manven工程中的一个模块依赖于另外的模块&#xff0c;可以执行maven的install命令&#xff0c;将被依赖的包安装在maven本地仓库。 示例 一个工程包含几个模块&#xff0c;模块之间存在依赖…