python - wxPython 对语言环境做了什么使 pandas 崩溃?
问题描述
当我尝试将 pandas 导入我的 wxPython 应用程序时,会引发“ValueError: unknown locale: en-US”异常。我可以通过在应用程序启动之前导入 pandas 来避免这种情况,但这似乎是一个愚蠢的要求。
这在一个简单的 wx 应用程序中很容易重复:
import wx
class TestApp(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)
import pandas
self.frame = wx.Frame(None, size=wx.Size(670,670), title='Test App')
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.frame.SetSizer(self.sizer)
if __name__ == '__main__':
app = TestApp()
app.MainLoop()
当我从我的虚拟环境运行这个应用程序时,我得到了这个堆栈跟踪:
(test) PS env_test> python .\test2.py Traceback (most recent call last):
File ".\test2.py", line 16, in <module>
app = TestApp()
File ".\test2.py", line 8, in __init__
import pandas
File "E:\Envs\test\lib\site-packages\pandas\__init__.py", line 32, in <module>
from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
File "E:\Envs\test\lib\site-packages\pandas\_libs\__init__.py", line 3, in <module>
from .tslibs import (
File "E:\Envs\test\lib\site-packages\pandas\_libs\tslibs\__init__.py", line 3, in <module>
from .conversion import localize_pydatetime, normalize_date
File "pandas\_libs\tslibs\c_timestamp.pxd", line 7, in init pandas._libs.tslibs.conversion
File "pandas\_libs\tslibs\c_timestamp.pyx", line 1, in init pandas._libs.tslibs.c_timestamp
File "pandas\_libs\tslibs\tzconversion.pyx", line 1, in init pandas._libs.tslibs.tzconversion
File "pandas\_libs\tslibs\timedeltas.pyx", line 1, in init pandas._libs.tslibs.timedeltas
File "pandas\_libs\tslibs\offsets.pyx", line 1, in init pandas._libs.tslibs.offsets
File "pandas\_libs\tslibs\ccalendar.pyx", line 13, in init pandas._libs.tslibs.ccalendar
File "pandas\_libs\tslibs\strptime.pyx", line 625, in init pandas._libs.tslibs.strptime
File "pandas\_libs\tslibs\strptime.pyx", line 530, in pandas._libs.tslibs.strptime.TimeRE.__init__
File "pandas\_libs\tslibs\strptime.pyx", line 405, in pandas._libs.tslibs.strptime.LocaleTime.__init__
File "pandas\_libs\tslibs\strptime.pyx", line 362, in pandas._libs.tslibs.strptime._getlang
File "c:\python37\lib\locale.py", line 587, in getlocale
return _parse_localename(localename)
File "c:\python37\lib\locale.py", line 495, in _parse_localename
raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: en-US
我正在使用 python3.7.4 在 Windows 10 上运行虚拟环境,并安装了最少的软件包:
Package Version
--------------- -------
numpy 1.18.4
pandas 1.0.3
Pillow 7.1.2
pip 20.1
python-dateutil 2.8.1
pytz 2020.1
setuptools 46.1.3
six 1.14.0
wheel 0.34.2
wxPython 4.1.0
我可以很好地在应用程序之外导入熊猫:
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> df = pandas.DataFrame()
>>>
我很困惑,我一直无法在其他地方找到答案。其他熊猫“未知语言环境”错误似乎与没有在 OSX 上导出语言环境有关。
解决方案
看来将 wxpython 降级到 4.0.7 版本就可以解决问题了。
推荐阅读
- spring-mvc - Zuul PredecorationFilter X-Forwarded-Prefix 标头导致 Spring ForwardedHeaderFilter 中的路径重复
- grafana - 如何通过 Grafana 开源百万行限制
- python - 如何轻松处理 python 中的浮点不准确性?
- python - 在 python 套接字中发送字典
- vue.js - Vue:通过 ref 更新子组件上的数据而不更新 DOM
- java - 如何将时间戳值设置为获取服务的@RequestParam 变量?
- php - 在 3 个字段中搜索数据 PHP
- python - Python excel 单元格类型(数字,单词,日期,...)
- git - 具有两个存储库、不同文件夹的 Azure DevOps 构建管道
- react-native - 是否可以使用地图功能在同一视图中的其他组件上方显示组件的阴影?反应原生