Ubuntu非conda环境python3.8下安装labelme

很久没用过labelme了,造实验数据需要在一个没有conda的Ubuntu20.04安装了python3.8.10的环境下安装labelme,先是直接执行

  pip install labelme

执行了多次每次都是卡死,后来先执行pip install pyqt发现也是卡死在同样的地方,发现原来是安装PyQt 5.15.11时有个提示要求输入yes来确认license,但是输入后回车没有任何反映,按CTRL+C报类似下面的错误:

  Getting requirements to build wheel ... doneCreated temporary directory: /tmp/pip-modern-metadata-2m8up4lyRunning command /usr/bin/python3 /tmp/tmp5__09fv9 prepare_metadata_for_build_wheel /tmp/tmplm26exwnQuerying qmake about your Qt installation...This is the GPL version of PyQt 5.15.11 (licensed under the GNU General Public License) for Python 3.8.10 on linux.Type 'L' to view the license.Type 'yes' to accept the terms of the license.Type 'no' to decline the terms of the license.L
^C^C    Preparing wheel metadata ... canceled
Cleaning up...Removing source in /tmp/pip-install-de6yndpt/labelmeRemoving source in /tmp/pip-install-de6yndpt/PyQt5
Removed PyQt5!=5.15.3,!=5.15.4 from https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz#sha256=fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52 (from labelme) from build tracker '/tmp/pip-req-tracker-ptuu_f15'
Removed build tracker: '/tmp/pip-req-tracker-ptuu_f15'
ERROR: Operation cancelled by user
Exception information:
Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 186, in _mainstatus = self.run(options, args)File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 357, in runresolver.resolve(requirement_set)File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 177, in resolvediscovered_reqs.extend(self._resolve_one(requirement_set, req))File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_oneabstract_dist = self._get_abstract_dist_for(req_to_install)File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 282, in _get_abstract_dist_forabstract_dist = self.preparer.prepare_linked_requirement(req)File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 515, in prepare_linked_requirementabstract_dist = _get_prepared_distribution(File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 95, in _get_prepared_distributionabstract_dist.prepare_distribution_metadata(finder, build_isolation)File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 40, in prepare_distribution_metadataself.req.prepare_metadata()File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 564, in prepare_metadataself.metadata_directory = self._generate_metadata()File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 549, in _generate_metadatareturn generate_metadata(File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata.py", line 36, in generate_metadatadistinfo_dir = backend.prepare_metadata_for_build_wheel(File "/usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl/pep517/wrappers.py", line 176, in prepare_metadata_for_build_wheelreturn self._call_hook('prepare_metadata_for_build_wheel', {File "/usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl/pep517/wrappers.py", line 255, in _call_hookself._subprocess_runner(File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 271, in runnercall_subprocess(File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 202, in call_subprocessline = console_to_str(proc.stdout.readline())
KeyboardInterrupt

有时错误是这样的:

  Successfully installed PyQt-builder-1.18.0 packaging-24.2 setuptools-75.3.0 sip-6.8.6 tomli-2.2.1Cleaning up...Removed build tracker: '/tmp/pip-req-tracker-016_2t0l'Installing build dependencies ... doneRunning command /usr/bin/python3 /tmp/tmpduzujhqo get_requires_for_build_wheel /tmp/tmpf6cr3v28Getting requirements to build wheel ... doneCreated temporary directory: /tmp/pip-modern-metadata-455t07egRunning command /usr/bin/python3 /tmp/tmpb4id76s0 prepare_metadata_for_build_wheel /tmp/tmpbzom7kfdQuerying qmake about your Qt installation...This is the GPL version of PyQt 5.15.11 (licensed under the GNU General Public License) for Python 3.8.10 on linux.Type 'L' to view the license.Type 'yes' to accept the terms of the license.Type 'no' to decline the terms of the license.L
yes
^C^C    Preparing wheel metadata ... Cleaning up...Removing source in /tmp/pip-install-dwxenbiv/pyqt5
Removed pyqt5 from https://files.pythonhosted.org/packages/0e/07/c9ed0bd428df6f87183fca565a79fee19fa7c88c7f00a7f011ab4379e77a/PyQt5-5.15.11.tar.gz#sha256=fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52 from build tracker '/tmp/pip-req-tracker-016_2t0l'
Removed build tracker: '/tmp/pip-req-tracker-016_2t0l'
ERROR: Operation cancelled by user
Exception information:
Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 271, in runnercall_subprocess(File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 202, in call_subprocessline = console_to_str(proc.stdout.readline())
KeyboardInterruptDuring handling of the above exception, another exception occurred:Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 186, in _mainstatus = self.run(options, args)File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 357, in runresolver.resolve(requirement_set)File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 177, in resolvediscovered_reqs.extend(self._resolve_one(requirement_set, req))File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_oneabstract_dist = self._get_abstract_dist_for(req_to_install)File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 282, in _get_abstract_dist_forabstract_dist = self.preparer.prepare_linked_requirement(req)File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 515, in prepare_linked_requirementabstract_dist = _get_prepared_distribution(File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 95, in _get_prepared_distributionabstract_dist.prepare_distribution_metadata(finder, build_isolation)File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 40, in prepare_distribution_metadataself.req.prepare_metadata()File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 564, in prepare_metadataself.metadata_directory = self._generate_metadata()File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 549, in _generate_metadatareturn generate_metadata(File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata.py", line 36, in generate_metadatadistinfo_dir = backend.prepare_metadata_for_build_wheel(File "/usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl/pep517/wrappers.py", line 176, in prepare_metadata_for_build_wheelreturn self._call_hook('prepare_metadata_for_build_wheel', {File "/usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl/pep517/wrappers.py", line 255, in _call_hookself._subprocess_runner(File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 271, in runnercall_subprocess(
KeyboardInterrupt

归根结底是卡在

File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 202, in call_subprocess
    line = console_to_str(proc.stdout.readline())

开始以为是需要conda的支持,到一个conda环境里也这么安装发现也是卡在这里,那就跟有没有conda没关系,于是猜测和PyQt的版本有关系,换个低一点版本可能可以,于是执行

                      pip install  pyqt5==5.13.0

改安装5.13.0果然顺利安装成功了,再执行

                      pip install labelme

也安装成功了

在conda环境下,可以直接执行labelme,因为自动把labelme文件加到了conda/bin里了,在没有conda的环境下,需要自己设置一下PATH环境变量。

首先执行一下

        sudo find / -path /media  -prune -o -name labelme

找到labelme文件在哪里(-path和-prune 是排除掉不需要搜索的目录路径),发现了是在~/.local/bin下,于是把这个路径加到PATH里去并source一下让设置生效

  export PATH=$PATH:~/.local/bin/labelme

 然后执行labelme,报新的错误:    

Traceback (most recent call last):File "/home/andong/.local/bin/labelme", line 5, in <module>from labelme.__main__ import mainFile "/home/andong/.local/lib/python3.8/site-packages/labelme/__main__.py", line 14, in <module>from labelme.app import MainWindowFile "/home/andong/.local/lib/python3.8/site-packages/labelme/app.py", line 22, in <module>from labelme import aiFile "/home/andong/.local/lib/python3.8/site-packages/labelme/ai/__init__.py", line 5, in <module>from .text_to_annotation import get_rectangles_from_texts  # NOQA: F401File "/home/andong/.local/lib/python3.8/site-packages/labelme/ai/text_to_annotation.py", line 10, in <module>model: str, image: np.ndarray, texts: list[str]
TypeError: 'type' object is not subscriptable

这是python3.8不再支持类似 list[str]和tuple[np.ndarray, np.ndarray, np.ndarray]这样的写法,需要使用typing.List和typing.Tuple类来替代,所以text_to_annotation.py文件里需要修改三处:

def get_rectangles_from_texts(model: str, image: np.ndarray, texts: List[str]
) -> Tuple[np.ndarray, np.ndarray, np.ndarray]:
#    model: str, image: np.ndarray, texts: list[str]
#) -> tuple[np.ndarray, np.ndarray, np.ndarray]:request: osam.types.GenerateRequest = osam.types.GenerateRequest(model=model,image=image,prompt=osam.types.Prompt(texts=texts,iou_threshold=1.0,score_threshold=0.01,max_annotations=1000,),)
def non_maximum_suppression(boxes: np.ndarray,scores: np.ndarray,labels: np.ndarray,iou_threshold: float,score_threshold: float,max_num_detections: int,
) -> Tuple[np.ndarray, np.ndarray, np.ndarray]:
#) -> tuple[np.ndarray, np.ndarray, np.ndarray]:num_classes = np.max(labels) + 1
def get_shapes_from_annotations(boxes: np.ndarray, scores: np.ndarray, labels: np.ndarray, texts: List[str]
) -> List[dict]:shapes: List[dict] = []
#    boxes: np.ndarray, scores: np.ndarray, labels: np.ndarray, texts: list[str]
#) -> list[dict]:
#    shapes: list[dict] = []for box, score, label in zip(boxes.tolist(), scores.tolist(), labels.tolist()):text = texts[label]xmin, ymin, xmax, ymax = boxshape = {"label": text,"points": [[xmin, ymin], [xmax, ymax]],"group_id": None,"shape_type": "rectangle","flags": {},"description": json.dumps(dict(score=score, text=text)),}shapes.append(shape)return shapes

然后执行labelme,就成功起来了:

 不过在我的conda环境里还报了一个错误:

Traceback (most recent call last):File "/root/anaconda3/envs/lstr/bin/labelme", line 5, in <module>from labelme.__main__ import mainFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/labelme/__main__.py", line 14, in <module>from labelme.app import MainWindowFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/labelme/app.py", line 27, in <module>from labelme.shape import ShapeFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/labelme/shape.py", line 4, in <module>import skimage.measureFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/skimage/measure/__init__.py", line 6, in <module>from .simple_metrics import compare_mse, compare_nrmse, compare_psnrFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/skimage/measure/simple_metrics.py", line 2, in <module>from ..metrics.simple_metrics import (mean_squared_error,File "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/skimage/metrics/__init__.py", line 1, in <module>from ._adapted_rand_error import adapted_rand_errorFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/skimage/metrics/_adapted_rand_error.py", line 2, in <module>from ._contingency_table import contingency_tableFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/skimage/metrics/_contingency_table.py", line 1, in <module>import scipy.sparse as sparseFile "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/scipy/sparse/__init__.py", line 229, in <module>from .base import *File "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/scipy/sparse/base.py", line 8, in <module>from .sputils import (isdense, isscalarlike, isintlike,File "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/scipy/sparse/sputils.py", line 17, in <module>supported_dtypes = [np.typeDict[x] for x in supported_dtypes]File "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/scipy/sparse/sputils.py", line 17, in <listcomp>supported_dtypes = [np.typeDict[x] for x in supported_dtypes]File "/root/anaconda3/envs/lstr/lib/python3.8/site-packages/numpy/__init__.py", line 320, in __getattr__raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'typeDict'

一般这个错误是因为numpy版本不对,查看了一下conda环境里Numpy版本是1.24.4,但是我能正常运行labelme的非conda环境里的Numpy的版本也是1.24.4,真是莫名其妙,没时间查原因,反正先把版本降低到1.21然后就可以了

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

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

相关文章

hi3516cv610修改i2c0引脚位置

hi3516cv610修改i2c引脚位置 我们i2c0位置改为 也就没用海思默认的Pin44 Pin43 Pin26、Pin65分别对应寄存器地址为 0x11130034_Pin26 0x17940004_Pin65 这里我们只需改 pin_mux.c文件 文件路径 ./smp/a7_linux/source/interdrv/sysconfig 改为这样ok pin_mux.c#include &quo…

基于Spring Boot的党员学习交流平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

LeetCode 114.二叉树展开为链表

题目&#xff1a; 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…

自然语言处理NLP 04案例——苏宁易购优质评论与差评分析

上一篇文章&#xff0c;我们爬取了苏宁易购平台某产品的优质评价和差评&#xff0c;今天我们对优质评价与差评进行分析 selenium爬取苏宁易购平台某产品的评论-CSDN博客 目录 1. 数据加载 2. 中文分词 3. 停用词处理 4. 数据标注与合并 5. 数据集划分 6. 文本特征提取 …

20250223下载并制作RTX2080Ti显卡的显存的测试工具mats

20250223下载并制作RTX2080Ti显卡的显存的测试工具mats 2025/2/23 23:23 缘起&#xff1a;我使用X99的主板&#xff0c;使用二手的RTX2080Ti显卡【显存22GB版本&#xff0c;准备学习AI的】 但是半年后发现看大码率的视频容易花屏&#xff0c;最初以为是WIN10经常更换显卡/来回更…

【JavaEE进阶】Spring Boot配置文件

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 SpringBoot配置⽂件 举例: 通过配置文件修改端口号 配置⽂件的格式 properties基本语法 读取配置⽂件 properties配置文件的缺点 yml配置⽂件 yml基本语法 yml和proper…

Docker内存芭蕾:优雅调整容器内存的极限艺术

title: “&#x1f4be; Docker内存芭蕾&#xff1a;优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “&#x1fa70;&#x1f4a5;&#x1f4ca;” 当你的容器变成内存吸血鬼时… &#x1f680; 完美内存编排示范 &#x1f4dc; 智能内存管家脚本…

【Godot4.3】题目与答案解析合并器

免责申明 本文和工具截图中涉及题库和题目&#xff0c;均为本人自学使用&#xff0c;并未有商业和传播企图。如有侵害&#xff0c;联系删改。 概述 笔者本人医学专业从业人员&#xff0c;编程只是业余爱好。在自己的专业应考学习过程当中&#xff1a; 有时候不太喜欢纸质题库…

学习笔记-250222

论文&#xff1a; Learning Hierarchical Prompt with Structured Linguistic Knowledge for Vision-Language Models 主要研究llm在图像分类中的能力&#xff0c;当提示输入目标类别时&#xff0c;llm能够生成相关的描述以及相应的结构化关系。 1.首先利用llm从普通的描述中获…

欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)

图论中的回路是指一个路径, 它从某个顶点开始, 经过所有边恰好一次, 并回到起始顶点. 定义 欧拉回路: 从一个顶点出发, 经过每条边恰好一次, 并且最终回到起始顶点. 哈密尔顿回路: 从一个顶点出发, 经过每个顶点恰好一次, 并且最终回到起始顶点. 欧拉路径: 从一个顶点出发, …

从图片生成3维场景--NERF原理解析及加速版HashNeRF-pytorch代码实现

概要 NeRF&#xff08;Neural Radiance Fields&#xff09;是一种基于神经网络的三维图像生成技术&#xff0c;通过一组从不同角度拍摄的2D图片&#xff0c;生成一个3D场景&#xff0c;并且能够渲染出该场景在任意视角下的图像。这项技术的核心思想是利用神经网络的强大建模能…

PHP-综合4

[题目信息]&#xff1a; 题目名称题目难度PHP-综合42 [题目考点]&#xff1a; PHP综合训练[Flag格式]: SangFor{Ouk3i63BuShgxqdRcn_9kMNqKFDe5j4f}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 http://分配ip:2087[题目writeup]&#xff1a;…

爱普生SG-8101CE可编程晶振赋能智能手机的精准心脏

在智能手机高速迭代的今天&#xff0c;高性能、低功耗与小型化已成为核心诉求。智能手机作为人们生活中不可或缺的工具&#xff0c;需要在各种复杂场景下稳定运行。爱普生SG-8101CE可编程晶振凭借其卓越性能&#xff0c;成为智能手机中不可或缺的精密时钟源&#xff0c;为通信、…

基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“流浪动物救助系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…

【AI】模型量化--模型量化技术基础

1. 背景 对于接触过AI模型的人来说,经常会听说一个词语模型量化,那什么是模型量化?为什么需要模型量化?有哪些常用的模型量化技术呢?本文将一一展开叙述。 2. 概念 模型量化是一种在深度学习和机器学习领域中广泛应用的技术,旨在通过减少模型中数据的表示精度来降低模…

力扣(leetcode)每日一题 1656 设计有序流

1656. 设计有序流 - 力扣&#xff08;LeetCode&#xff09; 题目 有 n 个 (id, value) 对&#xff0c;其中 id 是 1 到 n 之间的一个整数&#xff0c;value 是一个字符串。不存在 id 相同的两个 (id, value) 对。 设计一个流&#xff0c;以 任意 顺序获取 n 个 (id, value) …

【附源码】基于opencv+pyqt5搭建的人脸识别系统

文章目录 前言一、人脸检测二、人脸识别1.训练识别器2.识别人脸 三、界面相关1.Qlabel展示图片2.表格跟随内容而增加和减少3.选择图片文件4.警告框 四、源码获取总结 前言 人脸识别技术作为人工智能领域的一颗璀璨明珠&#xff0c;正逐渐渗透到我们生活的每一个角落&#xff0…

【一起学Rust | 框架篇 | Tauri2.0框架】在Tauri应用中设置Http头(Headers)

文章目录 前言一、配置准备1. 检查版本2. 使用条件3. 支持的请求头&#xff08;并不是全部支持&#xff09; 二、使用步骤1. 如何配置header2. 框架集成1. 对于Vite系列、Nuxt、Next.js这种前端框架Vite系列框架Angular系列框架Nuxt系列框架Next.js系列框架 2. 对于Yew和Leptos…

计算机毕业设计SpringBoot+Vue.jst0图书馆管理系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

SeaCMS V9海洋影视管理系统报错注入

漏洞背景 SQL 注入攻击是当前网络安全中最常见的一种攻击方式&#xff0c;攻击者可以利用该漏洞访问或操作数据库&#xff0c;造成数据泄露或破坏。通常发生在开发人员未能正确处理用户输入时。 在 SeaCMS V9 中&#xff0c;用户输入&#xff08;如登录、评论、分页、ID 等&a…