You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python模块导入报错:AttributeError与NameError问题排查

Python模块导入报错原因及解决方法

第一个报错:import converter后出现AttributeError: module 'converter' has no attribute 'lbs_to_kg'

可能原因:

  • converter.py文件里的函数定义有误:比如函数名拼写错误(比如写成lbs_to_kgs)、函数没有正确缩进(导致函数不属于模块顶层),或者文件里根本没正确定义这两个函数
  • 运行app4.py时的工作目录不对,导致导入的不是你写的那个converter.py(比如当前工作目录是上级目录,而converter.py在子目录里)
  • 同目录下的__pycache__文件夹里缓存了旧的模块文件,导致导入的是旧版本

解决办法:

  1. 打开converter.py,检查函数定义是否正确,比如确保代码是类似这样的:
def lbs_to_kg(weight):
    return weight * 0.453592

def kg_to_lbs(weight):
    return weight / 0.453592
  1. 确认converter.py和app4.py在同一个文件夹下,并且运行app4.py时的工作目录就是这个文件夹。可以在app4.py开头加一行代码查看当前工作目录:
import os
print(os.getcwd())

如果输出的路径不是两个文件所在的目录,就切换到对应目录再运行脚本。
3. 删除同目录下的__pycache__文件夹,然后重新运行app4.py

第二个报错:from converter import *后出现NameError: name 'converter' is not defined

原因:

用from converter import *的写法是把converter模块里的所有可导入对象(比如你定义的两个函数)直接导入到当前脚本的命名空间里,所以你不能再用converter.lbs_to_kg这种带模块前缀的方式调用函数——当前命名空间里根本没有converter这个模块对象,自然会报错。

解决办法:

  • 直接用函数名调用:比如print(lbs_to_kg(100)),不需要加converter.前缀
  • 如果想保留模块名的调用方式,就改用import converter(或者import converter as cv简化名称),然后用converter.lbs_to_kg(100)调用函数

内容的提问来源于stack exchange,提问作者etotoja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:45:01