python:导入库、模块失败
一般发生在程序开始部分:
from pymodbus.client.sync import ModbusSerialClient
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.constants import Endian
from pymodbus.compat import iteritems
import time
import threading
import json
from device import Device
比如这一堆,运行时可能报错如下:
Traceback (most recent call last):
File "/home/pi/Car/sensor.py", line 87, in <module>
sensor = Sensor(device_id, queue_name)
File "/home/pi/Car/sensor.py", line 19, in __init__
self.client = ModbusSerialClient(
NameError: name 'ModbusSerialClient' is not defined
两种情况:
1.库更新了,你目前装的库里方法失效了,你的代码走的是老库的
2.循环引用了,Python中循环应用的情况就是程序分级不清晰,会导致如下问题:
内存泄漏:由于循环引用,对象无法被垃圾回收器正确地释放。即使这些对象不再被程序使用,它们仍然无法被回收,从而占用了内存空间,导致内存泄漏问题。
引用计数错误:Python 中使用引用计数来管理对象的生命周期,在循环引用情况下,引用计数的增加和减少会出现问题。对象之间持续相互引用时,它们的引用计数不会变为零,导致无法正确地释放内存。
程序性能下降:循环引用可能导致 Python 解释器在处理对象时出现性能下降。由于需要额外的开销来管理循环引用,垃圾回收器需要更多的时间和资源来解决循环引用的问题,从而降低了程序的性能。
针对以上两种情况:
1.更新库,
pip3 install pymodbus==2.5.5
这就是将库版本回溯到以前的老库版本了,不过有时候老库的资源被删除了,要么找离老库最近的版本,要么更新程序代码。
2.显式地将引用设置为 None:在不再需要对象之间的引用关系时,可以显式地将其设置为 None,以断开循环引用。
使用弱引用(Weak Reference):对于不需要持有对象所有权的引用,可以使用弱引用来避免循环引用。弱引用不会增加对象的引用计数,而且在对象被回收时,弱引用会自动失效。
重新设计数据结构:如果出现循环引用问题,可能需要重新设计数据结构,以避免对象之间的相互引用关系。
python:导入库、模块失败的更多相关文章
- 5.python之pip安装模块失败
本文是篇水文,主要是在学习python过程中总是遇到使用pip安装一些模块失败,记录一下安装模块解决办法 第一种方法: 首先安装wheel模块: pip install wheel 如果wheel都安 ...
- python基础——使用模块
python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...
- 动态链接库dll,导入库lib,静态链接库lib
目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库” ...
- 怎样建立你自己的MASM导入库
by Iczelion (翻译:花心萝卜yqzq@163.net) 9.5.2000 这篇短文是讲述关于建立MASM导入库(import libraries)技巧,我假设你已经知道什么是导入库.在下面 ...
- Python学习(22):模块
转自 http://www.cnblogs.com/BeginMan/p/3183656.html 一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元 ...
- python中zipfile模块实例化解析
文章内容由--“脚本之家“--提供,在此感谢脚本之家的贡献,该网站网址为:https://www.jb51.net/ 简介: zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是 ...
- python 利用python的subprocess模块执行外部命令,获取返回值
有时执行dos命令需要保存返回值 需要导入库subprocess import subprocess p = subprocess.Popen('ping www.baidu.com', shell= ...
- 【循序渐进学Python】10.模块和包
1.导入模块 任何Python程序都可以作为模块导入,只要Python解释器能找到我们定义的模块所在位置即可,一般来讲,在一个模块被导入时,Python解释器会按照下面的步骤进行搜索: 在当前所在目录 ...
- python正则表达式——re模块
http://blog.csdn.net/zm2714/article/details/8016323 re模块 开始使用re Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先将 ...
- Python进阶之模块与包
模块 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","S ...
随机推荐
- DRF的认证组件(源码分析)
DRF认证组件(源码分析) 1. 数据库建立用户表 在drf中也给我们提供了 认证组件 ,帮助我们快速实现认证相关的功能,例如: # models.py from django.db import m ...
- 开心档之MySQL 管理
MySQL 管理 启动及关闭 MySQL 服务器 Windows 系统下 在 Windows 系统下,打开命令窗口(cmd),进入 MySQL 安装目录的 bin 目录. 启动: cd c:/mysq ...
- 12-提取css成单独文件
const { resolve } = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const M ...
- boot-admin整合Liquibase实现数据库版本管理
Liquibase 和 Flyway 是两款成熟的.优秀的.开源/商业版的数据库版本管理工具,鉴于 Flyway 的社区版本对 Oracle 数据库支持存在限制,所以 boot-admin 选择整合 ...
- 武装你的WEBAPI-OData Versioning
本文属于OData系列 目录 武装你的WEBAPI-OData入门 武装你的WEBAPI-OData便捷查询 武装你的WEBAPI-OData分页查询 武装你的WEBAPI-OData资源更新Delt ...
- 【C#】图片上传并根据长宽大小进行正方形、长方形及等比缩放。
#region 正方型裁剪并缩放 /// <summary> /// 正方型裁剪 /// 以图片中心为轴心,截取正方型,然后等比缩放 /// 用于头像处理 /// </summary ...
- 贪心算法基础及leetcode例题
参考 理论 本质:找到每个阶段的局部最优,然后去推导得到全局最优 两个极端:常识&&很难: 很多同学通过了贪心的题目,但都不知道自己用了贪心算法,因为贪心有时候就是常识性的推导,所以会 ...
- L3-017 森森快递
一.题目: 7-2 森森快递 (30 分) 森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由于道路限 ...
- Cobalt Strike 连接启动教程,制作图片🐎(2)
扫描有两种方式:arp 和 icmp 查看进程列表 攻击----生成后门-----Payload 可以生成各类语言免杀牧马---(输出:选择C或者python或者php) go.咕.com 生成c语言 ...
- 如何在.net6webapi中配置Jwt实现鉴权验证
JWT(Json Web Token) jwt是一种用于身份验证的开放标准,他可以在网络之间传递信息,jwt由三部分组成:头部,载荷,签名.头部包含了令牌的类型和加密算法,载荷包含了用户的信息,签名则 ...