Conflict with Plotly 5.5 and Dask 2021.12.0

Hi guys. I use Streamlit 1.3 and Plotly 5.5 and Dask 2021.12.0, when I run a example like:

from collections import namedtuple
import altair as alt
import math
import pandas as pd
import streamlit as st

import plotly.express as px

"""
# Welcome to Streamlit!
Edit `/streamlit_app.py` to customize this app to your heart's desire :heart:
If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community
forums](https://discuss.streamlit.io).
In the meantime, below is an example of what you can do with just a few lines of code:
"""


with st.echo(code_location='below'):
    total_points = st.slider("Number of points in spiral", 1, 5000, 2000)
    num_turns = st.slider("Number of turns in spiral", 1, 100, 9)

    Point = namedtuple('Point', 'x y')
    data = []

    points_per_turn = total_points / num_turns

    for curr_point_num in range(total_points):
        curr_turn, i = divmod(curr_point_num, points_per_turn)
        angle = (curr_turn + 1) * 2 * math.pi * i / points_per_turn
        radius = curr_point_num / total_points
        x = radius * math.cos(angle)
        y = radius * math.sin(angle)
        data.append(Point(x, y))

    st.altair_chart(alt.Chart(pd.DataFrame(data), height=500, width=500)
        .mark_circle(color='#0068c9', opacity=0.5)
        .encode(x='x:Q', y='y:Q'))

I get the following errors:

2021-12-22 18:50:20.089 INFO    numexpr.utils: Note: NumExpr detected 36 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing safe limit of 8.
2021-12-22 18:50:20.089 INFO    numexpr.utils: NumExpr defaulting to 8 threads.

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.1.12:8501

2021-12-22 18:50:21.603 Traceback (most recent call last):
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/streamlit/script_runner.py", line 354, in _run_script
    exec(code, module.__dict__)
  File "/media/kan-dai/workspace/workcode/miscellaneous/collections/streamlit/Capital-Bike-Share-Data-Streamlit-Web-Application/app.py", line 8, in <module>
    import plotly.express as px
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/plotly/express/__init__.py", line 15, in <module>
    from ._imshow import imshow
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/plotly/express/_imshow.py", line 11, in <module>
    import xarray
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/xarray/__init__.py", line 1, in <module>
    from . import testing, tutorial, ufuncs
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/xarray/tutorial.py", line 13, in <module>
    from .backends.api import open_dataset as _open_dataset
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/xarray/backends/__init__.py", line 6, in <module>
    from .cfgrib_ import CfGribDataStore
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/xarray/backends/cfgrib_.py", line 16, in <module>
    from .locks import SerializableLock, ensure_lock
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/xarray/backends/locks.py", line 13, in <module>
    from dask.distributed import Lock as DistributedLock
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/dask/distributed.py", line 11, in <module>
    from distributed import *
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/__init__.py", line 7, in <module>
    from .actor import Actor, ActorFuture
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/actor.py", line 5, in <module>
    from .client import Future
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/client.py", line 59, in <module>
    from .batched import BatchedSend
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/batched.py", line 10, in <module>
    from .core import CommClosedError
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/core.py", line 28, in <module>
    from .comm import (
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/comm/__init__.py", line 25, in <module>
    _register_transports()
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/comm/__init__.py", line 17, in _register_transports
    from . import inproc, tcp, ws
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/comm/tcp.py", line 387, in <module>
    class BaseTCPConnector(Connector, RequireEncryptionMixin):
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/distributed/comm/tcp.py", line 389, in BaseTCPConnector
    _resolver = netutil.ExecutorResolver(close_executor=False, executor=_executor)
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/tornado/util.py", line 288, in __new__
    instance.initialize(*args, **init_kwargs)
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/tornado/netutil.py", line 427, in initialize
    self.io_loop = IOLoop.current()
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/site-packages/tornado/ioloop.py", line 263, in current
    loop = asyncio.get_event_loop()
  File "/home/kan-dai/miniconda3/envs/MET/lib/python3.9/asyncio/events.py", line 642, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'ScriptRunner.scriptThread'.

When I change Dask from 2021.12.0 to 2021.11.2, no errors happen. So, how can I solve this? Thanks very much.

Hi @kan -

I’m not sure I’m understanding…in your example, you aren’t importing Dask, but changing installed versions of Dask changes whether the plotly package plots?

Best,
Randy

I had the exact same issue, thanks for verifying how you fixed it by moving dask to 2021.11.2.
Very strange error!

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.