TensorRT:AttributeError: 'module' object has no attribute 'Logger'

本文探讨了TensorRT不同版本之间的代码写法差异,主要对比了4.0版本与5.0版本的实现方式,包括加载引擎的具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TensorRT版本与代码写法不对.

具体写法:

        # using trt 4.0
        G_LOGGER = trt.infer.ConsoleLogger(trt.infer.LogSeverity.INFO)
        trt_engine = trt.utils.load_engine(G_LOGGER, engine_path)

        """
        ## using trt 5.0
        G_LOGGER = trt.Logger(trt.Logger.WARNING)
        with open(engine_path, "rb") as f, trt.Runtime(G_LOGGER) as runtime:
            trt_engine = runtime.deserialize_cuda_engine(f.read())
        """

        self.engine = Engine(trt_engine)

 

### SQLAlchemy 中 `logger.error` 报错 `'NoneType' object has no attribute 'ERROR'` 的原因分析 此问题通常发生在尝试通过日志记录器 (`logger`) 输出错误信息时,发现该日志记录器未被正确定义或初始化。具体来说: - 如果变量 `logger` 被设置为 `None` 或者其属性链中断,则调用 `logger.error()` 将引发异常 `'NoneType' object has no attribute 'error'`[^1]。 - 此外,在某些情况下,可能是由于模块导入顺序不当或其他配置文件覆盖了默认的日志记录器定义。 #### 解决方案 以下是几种常见的解决方案及其适用场景: 1. **确认 Logger 初始化** 验证是否已正确初始化 Python 日志库中的 `logging.Logger` 实例。可以通过以下方式创建一个新的日志实例: ```python import logging logger = logging.getLogger(__name__) handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.ERROR) ``` 上述代码片段确保了一个有效的日志记录器被绑定到当前模块,并设置了基本的控制台输出处理器以及格式化程序[^2]。 2. **检查依赖注入机制** 若项目采用框架(如 Flask-SQLAlchemy),需注意这些工具可能会自动管理日志对象。因此应查阅官方文档了解如何获取预设好的日志接口而不是自行重新声明[^3]。 3. **排查第三方插件冲突** 当安装多个扩展包时可能发生命名空间污染现象,比如两个不同版本间的函数名重叠可能导致意外行为。建议清理虚拟环境后按照最新兼容列表逐一添加所需组件[^4]。 4. **审查全局状态修改操作** 假如有其他部分显式地将某个共享资源置为空值(例如 `global_logger = None`),那么即使之前已经成功分配过有效引用也可能失效。务必定位此类潜在风险点加以修正[^5]。 --- ### 示例修复代码 假设问题是因缺少适当配置引起,可按如下方式进行调整: ```python import logging def setup_logging(): """ 设置基础日志功能 """ global logger if not hasattr(setup_logging, "_initialized"): logger = logging.getLogger("myapp.sqlalchemy") ch = logging.StreamHandler() # 控制台处理程序 fmt_str = '%(asctime)s:%(levelname)s:%(module)s:%(lineno)d:%(message)s' formatter = logging.Formatter(fmt_str) ch.setFormatter(formatter) logger.addHandler(ch) logger.setLevel(logging.DEBUG) setattr(setup_logging, "_initialized", True) setup_logging() try: pass # 执行实际业务逻辑... except Exception as e: logger.error(f"An unexpected exception occurred: {e}") ``` 以上脚本展示了怎样安全构建一个持久化的日志服务供整个应用程序生命周期内重复利用的同时避免重复执行不必要的准备工作。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值