当前位置: 首页 > news >正文

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博客

 

相关文章:

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

由于conda和ros2的环境实在太容易冲突了。我真的不敢再使用conda&#xff0c;着实是有些搞不明白这解释器之间的关系。 conda的卸载和ros2的安装暂不赘述&#xff0c;下面着重来说如何在Ubuntu中使用poetry进行包管理及遇到的问题。 1 安装poetry 由于在有写入权限的限制&am…...

射影平面 与 射影变换

射影平面 与 射影变换 射影平面 与 齐次坐标 中心为O 的把 将与一个点O 关联的所有平面和直线构成的集合称为 中心为O的把O[\lambda, p]射影&#xff08;从平面\pi 到把O的一个对应关系&#xff09;O[P, l] [OP, OL] ...截影&#xff08;从把O 到平面\pi 的一个对应关系&…...

(202307)wonderful-sql:决胜秋招(task6)

教程链接&#xff1a;Datawhale - 一个热爱学习的社区 换硬盘重装了系统&#xff0c;后面应该也不会用到mysql&#xff0c;不装环境了&#xff0c;没有截图。 Section A 练习一: 各部门工资最高的员工&#xff08;难度&#xff1a;中等&#xff09; 创建Employee 表&#x…...

Scratch 教程:如何实现文本分割

在平时&#xff0c;我们通常会有分割文本的要求&#xff0c;但扩展却又无法使用scratch离线版打开&#xff0c;咋办呢&#xff1f;我们可以用原版做出来&#xff01; 没关系&#xff0c;我来教你&#xff01; 我们自定义一个函数&#xff0c;之后要分割调用就行了 创建三个变量…...

安全基础 --- 编码(02)+ form表单实现交互

浏览器解析机制和XSS向量编码 <!-- javascript伪协议不能被urlcode编码&#xff0c;但可以被html实体编码:也是js协议的一部分&#xff0c;不能被编码js协议被解码后&#xff0c;URL解析器继续解析链接剩下的部分unicode编码可识别实现解码但符号不能被编码&#xff0c;编码…...

华为OD机考真题--五子棋--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 项目描述&#xff1a; 张兵和王武是五子棋迷&#xff0c;工作之余经常切磋棋艺。这不&#xff0c;这…...

把网站改为HTTPS访问方法

HTTPS是使用TSL/SSL加密超文本传输协议的扩展&#xff0c;用于跨网络的安全传输。网站更改为HTTPS&#xff0c;直接在网站形象上可以得到提升&#xff0c;更重要的是您的网站肯定会在排名和提升方面受益。机密信息的交换需要受到保护&#xff0c;以阻止未经授权的访问。 加密&a…...

【BASH】回顾与知识点梳理(四)

【BASH】回顾与知识点梳理 四 四. Bash Shell 的操作环境4.1 路径与指令搜寻顺序4.2 bash 的进站与欢迎讯息&#xff1a; /etc/issue, /etc/motd4.3 bash 的环境配置文件login与non-login shell/etc/profile (login shell 才会读)~/.bash_profile (login shell 才会读)source &…...

阿里云安全组设置

简介​ 云主机安全组必须打开如下端口&#xff1a; ssh&#xff1a;22http&#xff1a;80https&#xff1a;443ftp&#xff1a;21、20000&#xff5e;30000 阿里云安全组端口开放教程​ 腾讯云安全组端口开放教程​ 华为云安全组端口开放教程​...

QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇

QT图形视图系统 - 终篇 接上一篇&#xff0c;我们需要继续完成以下的效果&#xff1b; 先上个效果图&#xff1a; 修改背景&#xff0c;使之整体适配 上一篇我们绘制了标尺&#xff0c;并且我们修改了放大缩小和对应的背景&#xff0c;整体看来&#xff0c;我们的滚动条会和…...

代码随想录算法训练营第六十天|单调栈part03|● 84.柱状图中最大的矩形

84.柱状图中最大的矩形 Largest Rectangle in Histogram - LeetCode 单调栈这几题没过脑&#xff0c;感觉一团浆糊&#xff0c;要重新看一下 class Solution {public int largestRectangleArea(int[] heights) {Stack<Integer> stack new Stack<>();int[] newHeig…...

TCP的三次握手四次挥手

TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手&#xff1a;为了对每次发送的数据量进行跟踪与协商&#xff0c;确保数据段的发送和接收同步&#xff0c;根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系&#xff0c;并建立虚连接。 四次挥手&a…...

xml的学习笔记

学习视频&#xff1a;093-尚硅谷-xml-什么是XML以及它的作用_哔哩哔哩_bilibili 目录 XML简介 XML的作用 XML语法 1.文档声明 2.xml注释 3.元素标签 4.xml属性 5.语法规则 1.所有xml元素都须有关闭标签(也就是闭合) 2.xml 标签对大小写敏感 3.xml必须正确的嵌套 4…...

大数据之Hadoop(一)

目录 一、准备三台服务器 二、虚拟机间配置免密登录 三、安装JDK 四、关闭防火墙 五、关闭安全模块SELinux 六、修改时区和自动时间同步 一、准备三台服务器 我们先准备三台服务器&#xff0c;可以通过虚拟机的方式创建&#xff0c;也可以选择云服务器。 关于如何创建虚…...

Ubuntu安装git

使用 apt-get install git 安装git 报错&#xff1a; 这个错误信息通常表示您的系统上没有可用的 git 软件包。这可能是因为您的软件源列表中没有包含 git 软件包所在的软件源&#xff0c;或者您的软件源列表已经过期。 解决&#xff1a; 如果您使用的是 Ubuntu 或类似…...

[迁移学习]领域泛化

一、概念 相较于领域适应&#xff0c;领域泛化(Domain generalization)最显著的区别在于训练过程中不能访问测试集。 领域泛化的损失函数一般可以描述为以下形式&#xff1a; 该式分为三项&#xff1a;第一项表示各训练集权重的线性组合&#xff0c;其中π为使该项最小的系数&a…...

240. 搜索二维矩阵 II

240. 搜索二维矩阵 II 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 240. 搜索二维矩阵 II https://leetcode.cn/problems/search-a-2d-matrix-ii/description/ 完成情况&#xff1a; 解题思路&#xff1a; 从…...

【Linux:线程池】

文章目录 1 线程池概念2 第一个版本的线程池3 第二个版本的线程池4 第三个版本的线程池5 STL中的容器以及智能指针的线程安全问题6 其他常见的各种锁7 读者写者问题(了解) 1 线程池概念 一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而…...

跨境多商户中日韩英多语言商城搭建(PC+小程序+H5),搭建方案

随着全球化的推进&#xff0c;跨境电商正变得越来越普遍。在本文中&#xff0c;我们将介绍跨境电商系统开发中多语言商城独立站的部署搭建方案。 准备工作 在开始部署搭建之前&#xff0c;需要准备以下环境&#xff1a; 服务器&#xff0c;确保服务器具备足够的性能和稳定性。 …...

使用标准库版本编写LED闪烁

1、在STM32CubeMX中创建一个新的工程&#xff0c;选择STM32F103VCT6作为目标设备&#xff0c;并配置好所需的引脚和时钟设置。将需要用于LED连接的GPIO引脚设置为输出模式。 2、在生成代码后&#xff0c;打开工程目录&#xff0c;在Src文件夹中创建一个新的main.c文件。 3、在…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...