# 使用matplotlib时fontList.py3k.cache not found问题解决

本文主要解决使用matplotlib时出现的fontList.py3k.cache not found问题,指出这是读取地址的bug,解决办法是将matplotlib目录下的font_manager.py第231行改为direc = direc.split(‘\\0’,1)[0]。此外还提供了量化学习资源获取途径。

使用matplotlib时fontList.py3k.cache not found问题解决

runfile('E:/rqalpha-master/tests/run_func_test.py', wdir='E:/rqalpha-master/tests')
[2018-07-30 15:43:05.087574] DEBUG: basic_system_log: 
{'base': {'accounts': {'STOCK': 100000.0},
          'benchmark': '000300.XSHG',
          'data_bundle_path': 'C:\\Users\\win10/.rqalpha\\bundle',
          'end_date': datetime.date(2016, 12, 1),
          'frequency': '1d',
          'init_positions': [],
          'margin_multiplier': 1,
          'persist': False,
          'persist_mode': PERSIST_MODE.REAL_TIME,
          'resume_mode': False,
          'round_price': False,
          'run_type': RUN_TYPE.BACKTEST,
          'source_code': None,
          'start_date': datetime.date(2016, 6, 1),
          'strategy_file': 'strategy.py'},
 'extra': {'context_vars': None,
           'enable_profiler': False,
           'force_run_init_when_pt_resume': False,
           'is_hold': False,
           'locale': 'zh_Hans_CN',
           'log_level': 'verbose',
           'logger': [],
           'user_log_disabled': False,
           'user_system_log_disabled': False},
 'mod': {'sys_accounts': {'enabled': True},
         'sys_analyser': {'enabled': True, 'plot': True},
         'sys_booking': {'enabled': False},
         'sys_funcat': {'enabled': False},
         'sys_incremental': {'enabled': False},
         'sys_progress': {'enabled': True},
         'sys_risk': {'enabled': True},
         'sys_simulation': {'enabled': True},
         'sys_stock_realtime': {'enabled': False}},
 'validator': {'close_amount': True},
 'version': '0.1.6',
 'whitelist': ['base', 'extra', 'validator', 'mod']}
[2018-07-30 15:43:05.095064] DEBUG: system_log: 载入 Mod rqalpha.mod.rqalpha_mod_sys_simulation
[2018-07-30 15:43:05.100077] DEBUG: system_log: 载入 Mod rqalpha.mod.rqalpha_mod_sys_progress
[2018-07-30 15:43:05.105617] DEBUG: system_log: 载入 Mod rqalpha.mod.rqalpha_mod_sys_accounts
[2018-07-30 15:43:05.111107] DEBUG: system_log: 载入 Mod rqalpha.mod.rqalpha_mod_sys_analyser
[2018-07-30 15:43:05.116121] DEBUG: system_log: 载入 Mod rqalpha.mod.rqalpha_mod_sys_risk
[2018-07-30 15:43:05.121133] DEBUG: basic_system_log: mod start_up [START] sys_simulation
[2018-07-30 15:43:05.127150] DEBUG: basic_system_log: mod start_up [END]   sys_simulation
[2018-07-30 15:43:05.131661] DEBUG: basic_system_log: mod start_up [START] sys_progress
[2018-07-30 15:43:05.137176] DEBUG: basic_system_log: mod start_up [END]   sys_progress
[2018-07-30 15:43:05.142189] DEBUG: basic_system_log: mod start_up [START] sys_accounts
[2018-07-30 15:43:05.147231] DEBUG: basic_system_log: mod start_up [END]   sys_accounts
[2018-07-30 15:43:05.152217] DEBUG: basic_system_log: mod start_up [START] sys_analyser
[2018-07-30 15:43:05.157230] DEBUG: basic_system_log: mod start_up [END]   sys_analyser
[2018-07-30 15:43:05.165752] DEBUG: basic_system_log: mod start_up [START] sys_risk
[2018-07-30 15:43:05.172771] DEBUG: basic_system_log: mod start_up [END]   sys_risk
2016-06-01 INFO init
----------------------------------------------------------------------------------------
[2018-07-30 15:43:05.751400] DEBUG: basic_system_log: mod tear_down [START] sys_risk
[2018-07-30 15:43:05.756885] DEBUG: basic_system_log: mod tear_down [END]   sys_risk
[2018-07-30 15:43:05.763403] DEBUG: basic_system_log: mod tear_down [START] sys_analyser
[2018-07-30 15:43:05.793983] ERROR: system_log: tear down fail for sys_analyser
Traceback (most recent call last):
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 1413, in <module>
    fontManager = pickle_load(_fmcache)
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 964, in pickle_load
    with open(filename, 'rb') as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\win10\\.matplotlib\\fontList.py3k.cache'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Anaconda3.5-64\lib\site-packages\rqalpha\mod\__init__.py", line 77, in tear_down
    ret = self._mod_dict[mod_name].tear_down(*args)
  File "C:\Anaconda3.5-64\lib\site-packages\rqalpha\mod\rqalpha_mod_sys_analyser\mod.py", line 277, in tear_down
    plot_result(result_dict, self._mod_config.plot, self._mod_config.plot_save_file)
  File "C:\Anaconda3.5-64\lib\site-packages\rqalpha\mod\rqalpha_mod_sys_analyser\plot.py", line 24, in plot_result
    from matplotlib import rcParams, gridspec, ticker, image as mpimg, pyplot as plt
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\pyplot.py", line 29, in <module>
    import matplotlib.colorbar
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\colorbar.py", line 34, in <module>
    import matplotlib.collections as collections
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\collections.py", line 27, in <module>
    import matplotlib.backend_bases as backend_bases
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\backend_bases.py", line 62, in <module>
    import matplotlib.textpath as textpath
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\textpath.py", line 15, in <module>
    import matplotlib.font_manager as font_manager
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 1421, in <module>
    _rebuild()
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 1406, in _rebuild
    fontManager = FontManager()
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 1044, in __init__
    self.ttffiles = findSystemFonts(paths) + findSystemFonts()
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 313, in findSystemFonts
    for f in win32InstalledFonts(fontdir):
  File "C:\Anaconda3.5-64\lib\site-packages\matplotlib\font_manager.py", line 231, in win32InstalledFonts
    direc = os.path.abspath(direc).lower()
  File "C:\Anaconda3.5-64\lib\ntpath.py", line 535, in abspath
    path = _getfullpathname(path)
ValueError: _getfullpathname: embedded null character
[2018-07-30 15:43:05.800022] DEBUG: basic_system_log: mod tear_down [START] sys_accounts
[2018-07-30 15:43:05.803509] DEBUG: basic_system_log: mod tear_down [END]   sys_accounts
[2018-07-30 15:43:05.806516] DEBUG: basic_system_log: mod tear_down [START] sys_progress
[2018-07-30 15:43:05.809525] DEBUG: basic_system_log: mod tear_down [END]   sys_progress
[2018-07-30 15:43:05.813034] DEBUG: basic_system_log: mod tear_down [START] sys_simulation
[2018-07-30 15:43:05.815540] DEBUG: basic_system_log: mod tear_down [END]   sys_simulation
[2018-07-30 15:43:05.818548] DEBUG: system_log: 策略运行成功,正常退出

使用matplotlib时候就出现了fontList.py3k.cache not found
发现是读取地址的bug,也是坑爹的
如果遇到这个问题需要将matplotlib目录下的font_manager.py第231的改为direc = direc.split(‘\0’,1)[0]就可以了

更多量化学习资源

介绍.png
扫上方二维码,关注公众账号 量化投资学院 ,获取下列免费资源
- 回复“热点研报”,获取近年热点券商金融工程研究报告
- 回复“Python3”,获取Python免费学习教程
* 更多福利请点击此链接

关注StudyQuant

<think>好的,我现在需要解决用户在GNN环境中运行xodrpoints.py遇到的matplotlib导入错误。用户之前可能已经尝试过一些方法,但问题依然存在。首先,我应该考虑常见的导致ImportError的原因,并逐一排查。 首先,用户是在特定的环境(gnn)中运行脚本,所以可能环境配置有问题。可能的情况包括matplotlib未正确安装,或者安装的版本不兼容。用户可能使用了conda或pip安装,但依赖项可能缺失。例如,matplotlib需要某些后端库,如tkinter、PyQt等,如果系统缺少这些库,会导致导入错误。特别是在Linux系统中,可能需要手动安装这些依赖。 其次,环境冲突也是一个可能因素。虽然用户在gnn环境中,但可能存在多个Python环境,导致实际使用的环境不正确。用户需要确认是否激活了正确的环境,并检查matplotlib是否安装在该环境中。 另外,文件命名冲突也有可能。如果用户有一个名为matplotlib.py的自定义文件,可能会干扰导入。需要检查脚本所在目录是否有这样的文件。 还有,Python版本兼容性问题。某些matplotlib版本可能与Python 3.x的特定版本不兼容,尤其是在较旧的Python版本中。需要确认Python版本是否符合matplotlib的要求。 针对这些可能性,我应该逐步指导用户进行排查。首先建议检查matplotlib是否正确安装在gnn环境中,然后检查依赖的后端库是否安装。接着确认环境是否激活,是否有文件命名冲突,最后考虑Python版本问题。同,提供具体的命令示例,如使用conda或pip安装,安装tkinter等,这样用户可以一步步操作。 另外,用户可能需要更新matplotlib或安装miniconda来管理环境,如果问题依旧存在,可以尝试创建一个干净的新环境进行测试。这些步骤可以帮助用户系统地解决问题,确保所有可能的因素都被覆盖。</think>### 解决 matplotlib 导入错误的步骤 #### 1. 确认环境激活 - **现象**:未正确激活 `gnn` 环境会导致依赖项缺失 - **解决方法**: ```bash # 检查当前环境(conda环境) conda info --envs # 激活指定环境 conda activate gnn ``` 若使用 `virtualenv`,需通过 `source <venv_path>/bin/activate` 激活[^1]。 #### 2. 检查 matplotlib 安装状态 - **现象**:未安装或安装不完整 - **解决方法**: ```bash # 使用 conda 重新安装(推荐) conda install -c conda-forge matplotlib #使用 pip 安装 pip install --force-reinstall matplotlib ``` #### 3. 验证后端依赖 - **现象**:缺少 GUI 后端(如 tkinter、Qt) - **解决方法**(以 Ubuntu 为例): ```bash # 安装 tkinter 依赖 sudo apt-get install python3-tk # 安装 Qt 依赖 sudo apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 ``` #### 4. 排查文件命名冲突 - **现象**:存在名为 `matplotlib.py` 的自定义文件 - **解决方法**:检查脚本目录,删除或重命名冲突文件。 #### 5. 检查 Python 版本兼容性 - **现象**:Python 3.6 以下版本可能导致兼容性问题 - **解决方法**: ```bash # 升级 Python 版本 conda install python=3.8 ``` #### 6. 测试最小化用例 - **验证代码**: ```python import matplotlib print(matplotlib.__version__) # 预期输出: 3.5.0+ ``` #### 7. 使用备选后端(紧急方案) - **临设置**: ```python import matplotlib matplotlib.use(&#39;Agg&#39;) # 非交互式后端 ``` --- ### 故障树分析 | 可能原因 | 验证方法 | 修复方案 | |-------------------------|-----------------------------------|---------------------------------------| | 环境未激活 | `which python` 查看路径 | 重新激活环境 | | 缺少 GUI 依赖 | 运行 `import matplotlib.pyplot` | 安装系统级依赖包 | | 版本冲突 | `pip list` 查看版本 | 降级到 `matplotlib==3.4.3` | | 虚拟环境损坏 | 新建环境测试 | 重建 conda 环境 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值