Altair:使用 selenium 保存地图时出现 NoMatchingVersions

Altair: NoMatchingVersions when saving maps with selenium

我正在尝试创建一个系列并反复保存它们。 创建工作正常,但在保存时出现以下错误:

---------------------------------------------------------------------------
NoMatchingVersions                        Traceback (most recent call last)
<ipython-input-103-e75c3f4b4fa5> in <module>
     29     chart=(background + chart).configure_view(stroke='white')
     30     filename = f"{scenario}.svg"
---> 31     save(chart, filename, method='selenium', webdriver=driver)

~\Anaconda3\lib\site-packages\altair_saver\_core.py in save(chart, fp, fmt, mode, method, **kwargs)
     75     saver = Saver(spec, mode=mode, **kwargs)
     76 
---> 77     saver.save(fp=fp, fmt=fmt)
     78 
     79 

~\Anaconda3\lib\site-packages\altair_saver\savers\_saver.py in save(self, fp, fmt)
     86             raise ValueError(f"Got fmt={fmt}; expected one of {self.valid_formats}")
     87 
---> 88         content = self.mimebundle(fmt).popitem()[1]
     89         if isinstance(content, dict):
     90             with maybe_open(fp, "w") as f:

~\Anaconda3\lib\site-packages\altair_saver\savers\_saver.py in mimebundle(self, fmts)
     66                     f"invalid fmt={fmt!r}; must be one of {self.valid_formats}."
     67                 )
---> 68             bundle.update(self._mimebundle(fmt))
     69         return bundle
     70 

~\Anaconda3\lib\site-packages\altair_saver\savers\_selenium.py in _mimebundle(self, fmt)
    249 
    250     def _mimebundle(self, fmt: str) -> Mimebundle:
--> 251         out = self._extract(fmt)
    252         mimetype = fmt_to_mimetype(
    253             fmt,

~\Anaconda3\lib\site-packages\altair_saver\savers\_selenium.py in _extract(self, fmt)
    209             js_resources = {
    210                 "vega.js": get_bundled_script("vega", self._vega_version),
--> 211                 "vega-lite.js": get_bundled_script("vega-lite", self._vegalite_version),
    212                 "vega-embed.js": get_bundled_script(
    213                     "vega-embed", self._vegaembed_version

~\Anaconda3\lib\site-packages\altair_viewer\_scripts.py in get_bundled_script(package, version)
     36             f"package {package!r} not recognized. Available: {list(listing)}"
     37         )
---> 38     version_str = find_version(version, listing[package])
     39     content = pkgutil.get_data("altair_viewer", f"scripts/{package}-{version_str}.js")
     40     if content is None:

~\Anaconda3\lib\site-packages\altair_viewer\_utils.py in find_version(version, candidates, strict_micro)
    190     if not matches:
    191         raise NoMatchingVersions(
--> 192             f"No matches for version={version!r} among {candidates}"
    193         )
    194     return str(matches[-1])

NoMatchingVersions: No matches for version='4.8.1' among ['4.0.2']

我正在使用硒 altair_saver:

from altair_saver import save
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'pathtochromedriver/chromedriver_win32/chromedriver.exe')
for i, scenario in enumerate(scenario_columns):
    chart=makechart(scenario, i)
    filename = f"{scenario}.svg"
    save(chart, filename, method='selenium', webdriver=driver)


Here `scenario` is a string without special characters.

您需要将 altair_viewer 软件包更新到更新版本:

$ pip install -U altair_viewer

(这个错误在https://github.com/altair-viz/altair_viewer/pull/33中得到了改善,以后再出现就不会那么神秘了)。