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

在Python IDLE中运行VS Code修改后的代码为何不生效?

问题解决:修改模块函数后调用仍返回空DataFrame

核心原因排查

你遇到的问题本质是模块导入缓存/文件路径不匹配,或是异常静默导致的无数据返回,具体分析:

  1. VS Code修改stock_functions.py后,IDLE可能仍加载修改前的缓存版本,或是你编辑的文件与IDLE导入的并非同一路径的文件。
  2. 原函数用except:静默捕获所有异常,可能某只股票的API调用失败但无报错提示,导致循环未生成有效数据。

分步解决方案

1. 确认模块文件路径是否匹配

在IDLE中执行以下代码,查看当前导入的stock_functions模块实际位置:

import projects.api.stock_functions as sf
print(sf.__file__)

对比该路径与VS Code中编辑的文件路径:

  • 若不一致:说明你编辑的是副本,找到IDLE加载的文件修改即可。
  • 若一致:继续下一步。

2. 强制重新加载模块

无需重启IDLE,直接在会话中跳过缓存重新加载模块:

import importlib
import projects.api.stock_functions as sf
importlib.reload(sf)

之后再次调用sf.combined_events(l)测试。

3. 取消异常静默,排查API调用错误

修改combined_events的异常捕获逻辑,打印错误信息,避免因API调用失败导致无数据:

def combined_events(list_arg):
    appEvents = pd.DataFrame()
    for ticker in list_arg:
        try:
            events = sf.get_event_data_to_dataframe(ticker)
            appEvents = pd.concat([appEvents, events], ignore_index=True)
        except Exception as e:
            print(f"处理{ticker}时出错: {str(e)}")
    
    return appEvents

保存后重新加载模块调用,即可看到是否有API调用失败的情况,针对性修复。

4. 优化concat使用(可选)

反复调用concat效率较低,可先收集所有DataFrame到列表,最后一次性合并:

def combined_events(list_arg):
    df_list = []
    for ticker in list_arg:
        try:
            events = sf.get_event_data_to_dataframe(ticker)
            df_list.append(events)
        except Exception as e:
            print(f"处理{ticker}时出错: {str(e)}")
    
    return pd.concat(df_list, ignore_index=True) if df_list else pd.DataFrame()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:30:00