Python3.12兼容性问题-ImpImporter替换的解决办法

news/2024/9/17 7:59:29/ 标签: python

前言

     目前现有的很多Python代码都是基于Python3.8、或者Python3.9的甚至是更早的版本。

当我们用最新的Python3.12来跑这些程序的时候,就会出现很多兼容性的问题。

    本文就对“'ImpImporter'”和“'zipimporter'”的替换问题给出了一个解决方案。

1、错误描述

AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?

这个错误如何解决:

具体错误的描述

ERROR: Exception:

Traceback (most recent call last):

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 160, in exc_logging_wrapper

    status = run_func(*args)

             ^^^^^^^^^^^^^^^

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\commands\list.py", line 169, in run

    packages: "_ProcessedDists" = [

                                  ^

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 664, in <genexpr>

    return (d for d in it if d.canonical_name not in skip)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 612, in iter_all_distributions

    for dist in self._iter_distributions():

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 176, in _iter_distributions

    for dist in finder.find_eggs(location):

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 146, in find_eggs

    yield from self._find_eggs_in_zip(location)

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 123, in _find_eggs_in_zip

    from pip._vendor.pkg_resources import find_eggs_in_zip

  File "D:\PycharmProjects\py312_t1\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2164, in <module>

    register_finder(pkgutil.ImpImporter, find_on_path)

                    ^^^^^^^^^^^^^^^^^^^

AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?

2、错误的产生

当Pycharm打开新建Python3.12.4的工程的时候,

比如,我想导入一个opencv包

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

发现产生一堆的错误,如下:

即使,使用pip list 也是同样的错误。

想要升级pip:pip install --upgrade pip

也是同样的错误。

咋办?

3、解决的办法

找到文件:

将这行改掉:

改为:

register_finder(zipimport.zipimporter, find_on_path)

如下图:

这一处也改掉,如下图:

是不是,很大胆直接和暴力。

改完以后,发现pip install 就能用了,如下图:


http://www.ppmy.cn/news/1521580.html

相关文章

类加载过程中的静态成员初始化和实例成员初始化有什么区别?

在C#中&#xff0c;类的加载过程中涉及到静态成员初始化和实例成员初始化&#xff0c;它们之间有几个关键的区别&#xff1a; 初始化时机&#xff1a; 静态成员初始化&#xff1a;静态成员&#xff08;包括静态字段和静态构造函数中的代码&#xff09;在类第一次被引用时初始化…

骨传导耳机哪款好?精选五款热门骨传导耳机分享让你避免踩雷

目前在市面当中&#xff0c;骨传导耳机被称之为是黑科技耳机&#xff0c;骨传导耳机拥有很多优势&#xff0c;在听歌时不需要入耳&#xff0c;不会伤耳朵。随着骨传导耳机品牌的不断发展&#xff0c;人们在选购骨传导耳机时&#xff0c;也会觉得非常困难&#xff0c;可能一不小…

mysql的整理

插入数据&#xff1a; INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); insert into employee(id,workno,name,gender,age,idcard,entrydate) values(1,1,Itcast,男,-1,123456789012345678,2000-01-01); insert into employee values(3,3,韦一笑,男,38,1…

OpenJudge | 全在其中

总时间限制: 1000ms 内存限制: 65536kB 描述 你设计了一个新的加密技术&#xff0c;可以用一种聪明的方式在一个字符串的字符间插入随机的字符串从而对信息进行编码。由于专利问题&#xff0c;我们将不会详细讨论如何在原有信息中产生和插入字符串。不过&#xff0c;为了验证…

项目实战系列三: 家居购项目 第二部分

家居购项目 &#x1f407;servlet合并&#x1f34e;方案一: 隐藏域&#x1f34e;方案二: 反射模板设计模式动态代理 &#x1f333;显示家居&#x1f333;添加家居&#x1f349;解决重复添加&#x1f349;后端数据校验说明&#x1f349;BeanUtils自动封装Bean &#x1f333;删除…

Synchronized、Reetrantlock

一、线程安全问题 多线程操作共享变量&#xff0c;由于该共享变量不是立刻可见的&#xff0c;读写不具备原子性&#xff0c;所以存在线程安全问题 二、售票案例 模拟售票案例&#xff0c;库存有10张票&#xff0c;有3个窗口(3个子线程)分别去卖&#xff0c;直到库存为0&#…

论文速读|重新审视奖励设计与评估:用于强健人型机器人站立与行走控制的方法

论文地址&#xff1a;https://arxiv.org/pdf/2404.19173 这篇论文为类人机器人站立和行走&#xff08;SaW&#xff09;控制器的持续可衡量改进奠定了基础。通过引入一套定量实际基准测试方法&#xff0c;作者展示了现有控制器的优缺点&#xff0c;并通过基准测试指导新控制器的…

【Go 快速入门】Go Test 工具 | 单元测试 | 基准测试

文章目录 go test工具单元测试子测试测试覆盖率 基准测试性能比较函数重置时间并行测试 本节项目地址&#xff1a;07-UnitTestBenchmarkTest go test工具 Go语言中的测试依赖go test&#xff0c;该命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内&#xff0c;…

QT实现简易记事本

QT的Qmainwindow实现简易记事本,不带有UI界面。 1、功能展示 1、编辑文件时&#xff0c;文件名左上角有个“*”,代表文件未保存 2、菜单栏有文件、编辑的选项 3、工具栏有保存、新建、打开、调节字体、调节颜色。 4、文件菜单中有&#xff0c;新建&#xff0c;保存、打开、…

构建私有CA和证书

一、准备 两台虚拟机 192.168.252.148 CA 192.168.252.149 客户端 二、构建私有CA 192.168.252.148 CA 安装openssl 1.检查是否存在 rpm -qa openssl 2.安装或者更新openssl yum install openssl openssl-devel -y 查看CA相关配置 /etc/pki/tls/openssl.cnf这个文件是…

Golang | Leetcode Golang题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; func isRectangleCover(rectangles [][]int) bool {type point struct{ x, y int }area, minX, minY, maxX, maxY : 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt : map[point]int{}for _, rect : range…

基于Vector Davinci SIP的标定实现方法

标定是什么 在汽车软件开发过程中&#xff0c;软件做好之后一般都需要在实车上进行调试&#xff0c;尤其是底盘领域&#xff0c;软件的性能与实车参数、状态有很大的关系&#xff0c;很多参数在开发阶段没办法直接确定最优值&#xff0c;只能是先定一个大概的默认值&#xff0…

maven-helper插件解决jar包冲突实战

经常遇到jar包冲突问题&#xff0c;今天梳理一下&#xff1a; 1、打开idea 2、安装后 打开pom文件 点击 3、 4、 5、 6、 7、 8、 9、 可参考的类似文章

Day 8:77 组合

77 组合 1. 题目描述2. 解题思路3. 代码实现4. 回溯模板 1. 题目描述 77 组合 2. 解题思路 该题可以使用回溯类型的模板来解决&#xff0c;注意到可以进行剪枝操作。 3. 代码实现 class Solution {vector<vector<int>> res;vector<int> path; public:ve…

nodejs发邮件如何实现自动化邮件发送功能?

nodejs发邮件的安全性探讨&#xff1f;使用nodejs发邮件的教程&#xff1f; 在处理邮件发送这类重复性任务时&#xff0c;使用Node.js发邮件的功能可以极大地简化工作流程。AokSend将详细探讨如何利用Node.js发邮件来实现自动化邮件发送功能&#xff0c;确保您的邮件发送任务既…

双指针法01

习题1 27. 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下…

2024高教社杯全国大学生数学建模竞赛C题原创python代码

2024高教社杯全国大学生数学建模竞赛C题原创python代码 C题题目&#xff1a;农作物的种植策略 思路可以参考我主页之前的文章 以下均为python代码&#xff0c;推荐用anaconda中的notebook当作编译环境 from gurobipy import Model import pandas as pd import gurobipy as g…

探索TinyDB:轻量级数据库的优雅之旅

文章目录 探索TinyDB&#xff1a;轻量级数据库的优雅之旅背景&#xff1a;为何选择TinyDB&#xff1f;TinyDB是什么&#xff1f;如何安装TinyDB&#xff1f;简单库函数使用方法场景应用常见Bug及解决方案总结 探索TinyDB&#xff1a;轻量级数据库的优雅之旅 背景&#xff1a;为…

记一次MES项目上线失败总结--数据库层面+代码层面优化方案

难熬三个夜晚&#xff01;&#xff01;&#xff01;按原计划将ERP的生产订单、排程单、牌卡计划、小包装、装箱单等生产数据通过接口的形式同步到MES系统&#xff0c;其中生产订单、排程单和小包装、装箱单的数据量相对较少&#xff0c;合计大概50w条左右的数据&#xff0c;同步…

免费开源的低代码表单FormCreate安装教程,支持可视化设计,适配移动端

低代码表单FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。它支持 6 个 UI 框架&#xff0c;适配移动端&#xff0c;并且支持生成任何 Vue 组件。内置 20 种常用表单组件和自定义组件&#xff0c;再复杂的表单都可以轻松搞定 源码…