[BUG] On app start: `AttributeError: module 'psutil' has no attribute 'sensors_temperatures'`
leroyvn opened this issue · comments
Vincent Leroy commented
Issue description
I get an AttributeError
upon starting the application. See traceback below for details.
Traceback
➜ tiptop
╭───────────────────────── Traceback (most recent call last) ─────────────────────────╮
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:202 in _get_lines │
│ │
│ 199 │ def _get_lines(self) -> Lines: │
│ 200 │ │ """Get segment lines to render the widget.""" │
│ 201 │ │ if self.render_cache is None: │
│ ❱ 202 │ │ │ self.render_lines() │
│ 203 │ │ assert self.render_cache is not None │
│ 204 │ │ lines = self.render_cache.lines │
│ 205 │ │ return lines │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:188 in render_lines │
│ │
│ 185 │ │
│ 186 │ def render_lines(self) -> None: │
│ 187 │ │ width, height = self.size │
│ ❱ 188 │ │ renderable = self.render_styled() │
│ 189 │ │ options = self.console.options.update_dimensions(width, height) │
│ 190 │ │ lines = self.console.render_lines(renderable, options) │
│ 191 │ │ self.render_cache = RenderCache(self.size, lines) │
│ │
│ ╭────────── locals ──────────╮ │
│ │ height = 13 │ │
│ │ self = CPU(name='CPU#1') │ │
│ │ width = 87 │ │
│ ╰────────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:128 in render_styled │
│ │
│ 125 │ │ Returns: │
│ 126 │ │ │ RenderableType: A new renderable. │
│ 127 │ │ """ │
│ ❱ 128 │ │ renderable = self.render() │
│ 129 │ │ if self.padding is not None: │
│ 130 │ │ │ renderable = Padding(renderable, self.padding) │
│ 131 │ │ if self.border in self.BOX_MAP: │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/tiptop/_cpu.py:2 │
│ 20 in render │
│ │
│ 217 │ │
│ 218 │ def render(self): │
│ 219 │ │ if self.is_first_render: │
│ ❱ 220 │ │ │ self.collect_data() │
│ 221 │ │ │ self.is_first_render = False │
│ 222 │ │ return self.panel │
│ 223 │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/tiptop/_cpu.py:1 │
│ 19 in collect_data │
│ │
│ 116 │ │ │ stream.add_value(load) │
│ 117 │ │ │
│ 118 │ │ # CPU temperatures │
│ ❱ 119 │ │ temps = psutil.sensors_temperatures() │
│ 120 │ │ if self.has_cpu_temp: │
│ 121 │ │ │ assert self.tempkey is not None │
│ 122 │ │ │ self.temp_total_stream.add_value(temps[self.tempkey][0].current) │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ load = 0.0 │ │
│ │ load_per_thread = [ │ │
│ │ │ 25.2, │ │
│ │ │ 0.0, │ │
│ │ │ 24.2, │ │
│ │ │ 0.0, │ │
│ │ │ 22.1, │ │
│ │ │ 0.0, │ │
│ │ │ 14.4, │ │
│ │ │ 0.0, │ │
│ │ │ 5.3, │ │
│ │ │ 0.0, │ │
│ │ │ ... +2 │ │
│ │ ] │ │
│ │ self = CPU(name='CPU#1') │ │
│ │ stream = <tiptop.braille_stream.BrailleStream object at 0x10d7e6580> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: module 'psutil' has no attribute 'sensors_temperatures'
╭───────────────────────── Traceback (most recent call last) ─────────────────────────╮
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:202 in _get_lines │
│ │
│ 199 │ def _get_lines(self) -> Lines: │
│ 200 │ │ """Get segment lines to render the widget.""" │
│ 201 │ │ if self.render_cache is None: │
│ ❱ 202 │ │ │ self.render_lines() │
│ 203 │ │ assert self.render_cache is not None │
│ 204 │ │ lines = self.render_cache.lines │
│ 205 │ │ return lines │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:188 in render_lines │
│ │
│ 185 │ │
│ 186 │ def render_lines(self) -> None: │
│ 187 │ │ width, height = self.size │
│ ❱ 188 │ │ renderable = self.render_styled() │
│ 189 │ │ options = self.console.options.update_dimensions(width, height) │
│ 190 │ │ lines = self.console.render_lines(renderable, options) │
│ 191 │ │ self.render_cache = RenderCache(self.size, lines) │
│ │
│ ╭────────── locals ──────────╮ │
│ │ height = 13 │ │
│ │ self = CPU(name='CPU#1') │ │
│ │ width = 87 │ │
│ ╰────────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:128 in render_styled │
│ │
│ 125 │ │ Returns: │
│ 126 │ │ │ RenderableType: A new renderable. │
│ 127 │ │ """ │
│ ❱ 128 │ │ renderable = self.render() │
│ 129 │ │ if self.padding is not None: │
│ 130 │ │ │ renderable = Padding(renderable, self.padding) │
│ 131 │ │ if self.border in self.BOX_MAP: │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/tiptop/_cpu.py:2 │
│ 20 in render │
│ │
│ 217 │ │
│ 218 │ def render(self): │
│ 219 │ │ if self.is_first_render: │
│ ❱ 220 │ │ │ self.collect_data() │
│ 221 │ │ │ self.is_first_render = False │
│ 222 │ │ return self.panel │
│ 223 │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/tiptop/_cpu.py:1 │
│ 19 in collect_data │
│ │
│ 116 │ │ │ stream.add_value(load) │
│ 117 │ │ │
│ 118 │ │ # CPU temperatures │
│ ❱ 119 │ │ temps = psutil.sensors_temperatures() │
│ 120 │ │ if self.has_cpu_temp: │
│ 121 │ │ │ assert self.tempkey is not None │
│ 122 │ │ │ self.temp_total_stream.add_value(temps[self.tempkey][0].current) │
│ │
│ ╭─────────────────────────────────── locals ────────────────────────────────────╮ │
│ │ load = 0.0 │ │
│ │ load_per_thread = [0.0, 0.0, 0.0, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... +2] │ │
│ │ self = CPU(name='CPU#1') │ │
│ │ stream = <tiptop.braille_stream.BrailleStream object at 0x10d7e6580> │ │
│ ╰───────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: module 'psutil' has no attribute 'sensors_temperatures'
╭───────────────────────── Traceback (most recent call last) ─────────────────────────╮
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:202 in _get_lines │
│ │
│ 199 │ def _get_lines(self) -> Lines: │
│ 200 │ │ """Get segment lines to render the widget.""" │
│ 201 │ │ if self.render_cache is None: │
│ ❱ 202 │ │ │ self.render_lines() │
│ 203 │ │ assert self.render_cache is not None │
│ 204 │ │ lines = self.render_cache.lines │
│ 205 │ │ return lines │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:188 in render_lines │
│ │
│ 185 │ │
│ 186 │ def render_lines(self) -> None: │
│ 187 │ │ width, height = self.size │
│ ❱ 188 │ │ renderable = self.render_styled() │
│ 189 │ │ options = self.console.options.update_dimensions(width, height) │
│ 190 │ │ lines = self.console.render_lines(renderable, options) │
│ 191 │ │ self.render_cache = RenderCache(self.size, lines) │
│ │
│ ╭────────── locals ──────────╮ │
│ │ height = 13 │ │
│ │ self = CPU(name='CPU#1') │ │
│ │ width = 87 │ │
│ ╰────────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/textual/widget.p │
│ y:128 in render_styled │
│ │
│ 125 │ │ Returns: │
│ 126 │ │ │ RenderableType: A new renderable. │
│ 127 │ │ """ │
│ ❱ 128 │ │ renderable = self.render() │
│ 129 │ │ if self.padding is not None: │
│ 130 │ │ │ renderable = Padding(renderable, self.padding) │
│ 131 │ │ if self.border in self.BOX_MAP: │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/tiptop/_cpu.py:2 │
│ 20 in render │
│ │
│ 217 │ │
│ 218 │ def render(self): │
│ 219 │ │ if self.is_first_render: │
│ ❱ 220 │ │ │ self.collect_data() │
│ 221 │ │ │ self.is_first_render = False │
│ 222 │ │ return self.panel │
│ 223 │
│ │
│ ╭───────── locals ─────────╮ │
│ │ self = CPU(name='CPU#1') │ │
│ ╰──────────────────────────╯ │
│ │
│ /Users/leroyv/.local/pipx/venvs/tiptop/lib/python3.9/site-packages/tiptop/_cpu.py:1 │
│ 19 in collect_data │
│ │
│ 116 │ │ │ stream.add_value(load) │
│ 117 │ │ │
│ 118 │ │ # CPU temperatures │
│ ❱ 119 │ │ temps = psutil.sensors_temperatures() │
│ 120 │ │ if self.has_cpu_temp: │
│ 121 │ │ │ assert self.tempkey is not None │
│ 122 │ │ │ self.temp_total_stream.add_value(temps[self.tempkey][0].current) │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ load = 0.0 │ │
│ │ load_per_thread = [25.0, 0.0, 50.0, 0.0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... +2] │ │
│ │ self = CPU(name='CPU#1') │ │
│ │ stream = <tiptop.braille_stream.BrailleStream object at 0x10d7e6580> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
╰─────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: module 'psutil' has no attribute 'sensors_temperatures'
Configuration
- Machine: Mac mini (2018)
- OS: macOS Monterey 12.0.1 (21A559)
- Python 3.9 (Homebrew, running the app installed with pipx)
Nico Schlömer commented
You're using an outdated version of tiptop.
Vincent Leroy commented
AFAIK I'm using the latest packaged version (0.0.13):
➜ pipx list
...
package tiptop 0.0.13, Python 3.9.7
- tiptop
Just to be sure, I also tried using the latest commit on main
and got the same outcome.
Nico Schlömer commented
I'm sorry, now I see it.