Repository: truera/trulens
Issue: tru.run_dashboard error
Root cause: Environment Incompatibility

I get an error when try to run dashboard:
```
Starting dashboard ...
Config file already exists. Skipping writing process.
Credentials file already exists. Skipping writing process.
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[23], line 2
      1 # launches on http://localhost:8501/
----> 2 tru.run_dashboard()
      3 #tru.stop_dashboard()

File ~/.local/lib/python3.11/site-packages/trulens_eval/tru.py:847, in Tru.run_dashboard(self, port, address, force, _dev)
    840     args.append(f"--server.address={address}")
    842 args += [
    843     leaderboard_path, "--", "--database-url",
    844     self.db.engine.url.render_as_string(hide_password=False)
    845 ]
--> 847 proc = subprocess.Popen(
    848     args,
    849     stdout=subprocess.PIPE,
    850     stderr=subprocess.PIPE,
    851     text=True,
    852     **env_opts
    853 )
    855 started = threading.Event()
    856 tunnel_started = threading.Event()

File /software/jupyter/conda/envs/jupyter/lib/python3.11/subprocess.py:1022, in Popen.__init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, user, group, extra_groups, encoding, errors, text, umask, pipesize, process_group)
   1018         if self.text_mode:
   1019             self.stderr = io.TextIOWrapper(self.stderr,
   1020                     encoding=encoding, errors=errors)
-> 1022     self._execute_child(args, executable, preexec_fn, close_fds,
   1023                         pass_fds, cwd, env,
   1024                         startupinfo, creationflags, shell,
   1025                         p2cread, p2cwrite,
   1026                         c2pread, c2pwrite,
   1027                         errread, errwrite,
   1028                         restore_signals,
   1029                         gid, gids, uid, umask,
   1030                         start_new_session, process_group)
   1031 except:
   1032     # Cleanup if the child failed starting.
   1033     for f in filter(None, (self.stdin, self.stdout, self.stderr)):

File /software/jupyter/conda/envs/jupyter/lib/python3.11/subprocess.py:1899, in Popen._execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session, process_group)
   1897     if errno_num != 0:
   1898         err_msg = os.strerror(errno_num)
-> 1899     raise child_exception_type(errno_num, err_msg, err_filename)
   1900 raise child_exception_type(err_msg)

FileNotFoundError: [Errno 2] No such file or directory: 'streamlit'
```
My python version is 3.11, trulens-eval version 0.22.2, I actually have streamlit (version 1.31.1)
I see the logging db(default.sqlite) in my local directory but no any .streamlit folder
I tried different trulens-eval version down to 0.19.2 but the problem remains

@julfr - can you share more about the environment you're running in or the OS?

@joshreini1 
I am facing the same issue. Actually I can see both .sqllite and .streamlit at current path (also validated with sys.path).

Here is my environment
- Ubuntu 22.04
- Python 3.10
- trulens_eval 0.25.1
- streamlit (installed) 1.32.1




RuntimeError                              Traceback (most recent call last)
Cell In[5], line 5
      2 from trulens.dashboard import run_dashboard
      4 tru = TruSession()
----> 5 run_dashboard(tru)

File ~\AppData\Roaming\Python\Python311\site-packages\trulens\dashboard\run.py:241, in run_dashboard(session, port, address, force, _dev, _watch_changes)
    239 if not started.wait(timeout=wait_period):
    240     session._dashboard_proc = None
--> 241     raise RuntimeError(
    242         "Dashboard failed to start in time. "
    243         "Please inspect dashboard logs for additional information."
    244     )
    246 return proc

RuntimeError: Dashboard failed to start in time. Please inspect dashboard logs for additional information.