8000 GitHub · Where software is built
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
macos环境下使用图形界面运行策略会导致pandas日期识别失败 #3651
Open
@Shadow-Xin

Description

@Shadow-Xin

版本号:

vnpy==4.0.0,vnpy==3.9.4

平台:

macOS Sequoia 15.5

问题描述:

在使用vnpy写策略时需要检测交易日,于是引入了exchange_calendars这个库。发现一个奇怪的现象:如果使用jupyter来回测,不会有任何问题。但是如果使用run.py调用了图形界面运行策略,就会报错“ ValueError: time data "1982-09-27" doesn't match format "%Y-%b-%d", at position 1.”。

原因:

究其原因是在导入exchange_calendars这个库的时候,会使用pandas.to_datetime()的方法将很多字符串格式的日期转为pandas的日期格式。pandas在转换格式的时候需要获取本机的时区设置。但是macos的GUI界面有特殊情况:

在GUI环境中,如果没有明确设置,可能会使用默认的"C"区域(即POSIX标准,其中月份缩写是英文,且日期格式可能不同)——deepseek

也就是说,在mac的图形界面下,默认会使用“%Y-%b-%d”的格式来解析日期字符串。这就解释了前面的报错。

提供我的暂时解决方案供参考,在run.py中添加:

import os
# 必须在导入 PyQt 前设置环境变量

os.environ["LC_TIME"] = "en_US.UTF-8"
os.environ["LC_ALL"] = "en_US.UTF-8"

希望vnpy提供彻底的解决方案,在创建Qt界面时设置好时区等格式。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0