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

为何Idle无法导入启动后创建/修改的.py文件内容?

问题:Idle中修改模块后无法导入新增内容的原因

复现步骤

  1. 创建myLib.py文件,内容如下:
#!/usr/bin/env python3

pre_launch_str = "Pre-launch!"
# post_launch_str = "Post-launch!"
  1. 从文件所在文件夹启动Idle
  2. 执行from myLib import pre_launch_str可正常导入使用
  3. 保持Idle运行
  4. 通过其他应用/终端修改myLib.py,取消post_launch_str的注释以新增该对象
  5. 执行from myLib import post_launch_str会触发错误:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'post_launch_str' from 'myLib' (/home/myUser/myLib.py)

该现象在Linux(zsh)+Python3.10、Python3.5及MacOS环境中均存在,请问原因是什么?

原因解释

这是Python模块导入机制的正常表现,和Idle本身无关:

  • Python进程在第一次导入模块时,会将模块文件编译为字节码(生成.pyc文件),并把整个模块对象加载到内存中。
  • 后续所有对该模块的导入操作,都会直接复用内存中已加载的模块实例,不会重新读取磁盘上的最新文件内容。
  • Idle本质是一个持续运行的Python交互式进程,你修改磁盘上的myLib.py后,Idle进程内的模块依然是启动后第一次导入时的旧版本,所以找不到新增的post_launch_str。

如果需要在Idle中使用修改后的模块,可以执行import importlib; importlib.reload(myLib)重新加载模块,之后就能导入新增内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:55:14