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

Python更新自定义模块后如何不重启VS2017重新导入解决无属性报错

报错原因

Python导入模块时会自动将模块缓存到sys.modules字典中,后续重复执行import source语句时,Python会直接读取缓存内容,不会重新加载修改后的source.py文件,因此新增的fun3无法被识别。

不重启IDE的解决方法

根据你使用的Python版本,选择对应重载方法即可:

Python 3.4及以上版本

使用内置importlib模块的reload方法完成模块重载:

import importlib
import source

# 执行重载操作
source = importlib.reload(source)

# 重载后即可正常调用新增函数
source.fun3()

Python 2.x版本

Python 2中reload为内置函数,直接调用即可:

import source

# 执行重载操作
source = reload(source)

# 重载后即可正常调用新增函数
source.fun3()
注意事项
  • 若你之前使用from source import *或者from source import fun1, fun2的导入方式,重载模块后需要重新执行一次导入语句,才能将新增函数加载到当前命名空间。
  • 你新增的fun3代码存在语法错误:单引号包裹的字符串内部出现未转义的单引号,会导致source.py本身无法正常加载,修改为以下两种写法即可:
    # 写法1:转义内部单引号
    def fun3():
       print('Modi is India\'s Prime minister!!!!!!!')
    # 写法2:用双引号包裹字符串
    def fun3():
       print("Modi is India's Prime minister!!!!!!!")
    
  • 上述方法在Visual Studio 2017的Python交互环境、普通运行/调试场景下均生效,无需重启IDE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:18:05