Skip to content

chrome/chromium renderer not detected correctly on Ubuntu (name is chromium-browser)  #2348

Closed
@emmanuelle

Description

@emmanuelle

On my Ubuntu machine I cannot configure a chrome renderer (my default browser is firefox). The reason is that Chromium is registered with the name chromium-browser as shown below, so that webbrowser.get throws an error when called with chrome.

>>> import plotly.io as pio                                                                                                      
>>> pio.renderers.default = 'chromium'                                                                                           
>>> import plotly.graph_objects as go                                                                                            
>>> go.Figure(go.Scatter(x=[1], y=[0])).show()                                                                                   
Traceback (most recent call last):
  File "<ipython-input-5-d0da89a1679b>", line 1, in <module>
    go.Figure(go.Scatter(x=[1], y=[0])).show()
  File "/home/emma/code/plotly.py/packages/python/plotly/plotly/basedatatypes.py", line 2794, in show
    return pio.show(self, *args, **kwargs)
  File "/home/emma/code/plotly.py/packages/python/plotly/plotly/io/_renderers.py", line 391, in show
    renderers._perform_external_rendering(fig_dict, renderers_string=renderer, **kwargs)
  File "/home/emma/code/plotly.py/packages/python/plotly/plotly/io/_renderers.py", line 340, in _perform_external_rendering
    renderer.render(fig_dict)
  File "/home/emma/code/plotly.py/packages/python/plotly/plotly/io/_base_renderers.py", line 736, in render
    open_html_in_browser(html, self.using, self.new, self.autoraise)
  File "/home/emma/code/plotly.py/packages/python/plotly/plotly/io/_base_renderers.py", line 681, in open_html_in_browser
    webbrowser.get(using).open(
  File "/usr/lib/python3.7/webbrowser.py", line 65, in get
    raise Error("could not locate runnable browser")
Error: could not locate runnable browser

>>> import webbrowser                                                                                                            
>>> print(webbrowser._browsers)                                                                                                  
{'xdg-open': [None, <webbrowser.BackgroundBrowser object at 0x7fe81203fef0>], 'gvfs-open': [None, <webbrowser.BackgroundBrowser object at 0x7fe81203fbe0>], 'x-www-browser': [None, <webbrowser.BackgroundBrowser object at 0x7fe81203f7b8>], 'firefox': [None, <webbrowser.Mozilla object at 0x7fe81203ff98>], 'chromium-browser': [None, <webbrowser.Chrome object at 0x7fe81203f860>]}

We could either add another renderer name chromium-browser, or query matching strings in webbrowser._browser.keys(). The second solution is probably cleaner and could also make it possible to remove either 'chrome' or 'chromium' if we want. Thoughts @jonmmease @nicolaskruchten ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugsomething broken

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions