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

Python脚本在Sublime Text与Anaconda-Jupyter运行结果不一致问题排查

环境不一致导致Python脚本在Sublime Text与Jupyter运行异常

问题背景

有多台Windows电脑,其中一台重装最新版Python和Anaconda后,原有正常运行的Python脚本在Sublime Text/Python环境中出现多处异常,但Jupyter中运行正常。已尝试卸载重装Python、相关库及Sublime Text,也试过旧版本,问题仍存在。其他同配置电脑运行代码均正常,需定位原因并修复以统一运行结果。

异常示例1:pandas字符串替换结果不一致

执行以下pandas代码时,Sublime Text与Jupyter运行结果不同:

import pandas as pd 

# assign data of lists.  
data = {'Ticker': ['AAL', 'BRK.A', 'DAL', 'INTC']}  

# Create DataFrame  
df = pd.DataFrame(data)  

print(df,'\n')

df['Ticker'] = df['Ticker'].str.replace('.','-', regex=True)  

# Print the output.  
print(df) 

异常示例2:日期计算报错

执行持仓天数计算代码时,Sublime Text环境报错:

df_trades['Days Held'] = (df_trades['Exit Date'] - df_trades['Date']).dt.days

报错信息:

Traceback (most recent call last):
  File "C:\Users\Windows10i\Desktop\20230408 Backtest Design Optimised BEST ATM.py", line 865, in <module>
    df_trades['Days Held'] = (df_trades['Exit Date'] - df_trades['Date']).dt.days
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Windows10i\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\generic.py", line 5989, in __getattr__
    return object.__getattribute__(self, name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Windows10i\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\accessor.py", line 224, in __get__
    accessor_obj = self._accessor(obj)
                   ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Windows10i\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\indexes\accessors.py", line 580, in __new__
    raise AttributeError("Can only use .dt accessor with datetimelike values")
AttributeError: Can only use .dt accessor with datetimelike values. Did you mean: 'at'?

排查与修复方案

1. 确认Sublime Text使用的Python环境

  • 打开Sublime Text,新建测试文件输入以下代码并运行,查看输出的Python路径和pandas版本:
    import sys
    import pandas as pd
    print(sys.executable)
    print(pd.__version__)
    
  • 对比Jupyter中运行同一代码的输出,若路径不同,说明Sublime未使用Anaconda环境,需配置Sublime的Python解释器路径为Anaconda环境下的python.exe。

2. 检查环境变量优先级

  • Windows环境变量中,系统变量的Path里若存在多个Python路径,可能导致Sublime调用了非Anaconda的Python。将Anaconda的Scripts和python.exe所在路径移至Path最上方,重启Sublime后重试。

3. 验证pandas版本一致性

  • 若示例1中Sublime的pandas版本与Jupyter不同,可能是str.replace的行为差异(pandas版本更新后,regex参数默认值变化)。统一安装与其他正常电脑相同版本的pandas:
    pip install pandas==x.x.x  # 替换为正常电脑的版本号
    

4. 检查日期列的数据类型

  • 示例2报错说明日期列在Sublime环境中未被识别为datetime类型,添加代码强制转换:
    df_trades['Exit Date'] = pd.to_datetime(df_trades['Exit Date'])
    df_trades['Date'] = pd.to_datetime(df_trades['Date'])
    df_trades['Days Held'] = (df_trades['Exit Date'] - df_trades['Date']).dt.days
    
  • 若其他电脑无需转换,说明Sublime环境中数据读取时未自动解析日期,需检查数据读取代码(如pd.read_csv是否添加了parse_dates参数)。

5. 清理残留的Python环境配置

  • 删除用户目录下的__pycache__文件夹,清理Sublime Text的缓存(通过Preferences > Browse Packages找到缓存目录删除),避免旧环境残留影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:37:05