Closed msmnr9 closed 3 years ago
If you run
pip3 install pycairo
does that fix it ?
Unfortunately no.
pip3 install pycairo
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pycairo
Using cached https://www.piwheels.org/simple/pycairo/pycairo-1.20.0-cp37-cp37m-linux_armv7l.whl (260 kB)
Installing collected packages: pycairo
Successfully installed pycairo-1.20.0
sudo python3 src/main.py --led-gpio-mapping=adafruit-hat-pwm --led-brightness=60 --led-slowdown-gpio=2
ignoring unknown attr section aeabi"
ignoring unknown attr section aeabi"
ignoring unknown attr section aeabi"
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/cairosvg/surface/__init__.py", line 25, in <module>
import cairocffi as cairo
File "/usr/lib/python3/dist-packages/cairocffi/__init__.py", line 46, in <module>
cairo = dlopen(ffi, 'cairo', 'cairo-2')
File "/usr/lib/python3/dist-packages/cairocffi/__init__.py", line 43, in dlopen
raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "src/main.py", line 5, in <module>
from renderer.main import MainRenderer
File "/home/pi/nhl-led-scoreboard/src/renderer/main.py", line 5, in <module>
from boards.boards import Boards
File "/home/pi/nhl-led-scoreboard/src/boards/boards.py", line 7, in <module>
from boards.scoreticker import Scoreticker
File "/home/pi/nhl-led-scoreboard/src/boards/scoreticker.py", line 7, in <module>
from renderer.scoreboard import ScoreboardRenderer
File "/home/pi/nhl-led-scoreboard/src/renderer/scoreboard.py", line 3, in <module>
from renderer.logos import LogoRenderer
File "/home/pi/nhl-led-scoreboard/src/renderer/logos.py", line 3, in <module>
from images.image_helper import ImageHelper
File "/home/pi/nhl-led-scoreboard/src/images/image_helper.py", line 2, in <module>
import cairosvg
File "/usr/lib/python3/dist-packages/cairosvg/__init__.py", line 27, in <module>
from . import surface
File "/usr/lib/python3/dist-packages/cairosvg/surface/__init__.py", line 30, in <module>
import cairo # pycairo
ModuleNotFoundError: No module named 'cairo'
The cairosvg is installed as a packaged file via apt and not through pip. So you need to use the sudo apt install python3-cairosvg
. For some reason, the pip version causes issues.
You might need to remove it first and reinstall as it looks like it's already installed.
Also if you are installing any python libraries through pip, we aren't using user installations as the code runs as root so if you install cairo vai pip3, it should be sudo pip3 install pycairo
When you say you did a fresh install, do you mean you just deleted the repo and reinstalled it or you formatted the sd card and installed the new raspberry pi os and then installed the software ?
For the fresh install I deleted the repo and reinstalled. I haven't had a chance to reformat the sd card. I'm running pihole on it as well and haven't had the time to take down the network yet.
I tried installed the cairosvg package through apt and it gave me
E: Write error - ~LZMAFILE (28: No space left on device)
Did some research and it looks like I have no available Inodes to write the changes needed by apt. If I run the df command I get
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 14679776 2533916 11516940 19% /
devtmpfs 823564 0 823564 0% /dev
tmpfs 955660 4136 951524 1% /dev/shm
tmpfs 955660 92264 863396 10% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 955660 0 955660 0% /sys/fs/cgroup
/dev/mmcblk0p1 258095 48782 209314 19% /boot
log2ram 40960 40960 0 100% /var/log
tmpfs 191132 0 191132 0% /run/user/999
tmpfs 191132 0 191132 0% /run/user/1000
And when I run df -i I get
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/root 931040 63190 867850 7% /
devtmpfs 103559 394 103165 1% /dev
tmpfs 169607 12 169595 1% /dev/shm
tmpfs 169607 527 169080 1% /run
tmpfs 169607 2 169605 1% /run/lock
tmpfs 169607 15 169592 1% /sys/fs/cgroup
/dev/mmcblk0p1 0 0 0 - /boot
log2ram 169607 48 169559 1% /var/log
tmpfs 169607 10 169597 1% /run/user/999
tmpfs 169607 10 169597 1% /run/user/1000
Since my /boot has 0 Inoes I assume that's my problem. And I assume reformatting the sd card is the best bet. I haven't changed any system settings besides regular updates so I'm not sure where it could have got bungled up.
Yeah the best bet is formatting the SD card and installing raspberry pi OS. Im not sure to what extend using the raspberry pi for something else like running Pihole could affect the scoreboard software.
Describe the bug
I tried to upgrade and a fresh install of the current version. During the install script I have a [NEW] package python3-pillow but it looks as if nothing is installed during this part of the script. When I try to run the scoreboard it errors out with
ModuleNotFoundError: No module named 'cairo'
I'll paste all of my errors below and output of the install script. I tried a fresh install of python3 and a new clone of the nhl scoreboard github.Logs Install script output
Output when I run the scoreboard:
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/cairosvg/surface/init.py", line 25, in
import cairocffi as cairo
File "/usr/lib/python3/dist-packages/cairocffi/init.py", line 46, in
cairo = dlopen(ffi, 'cairo', 'cairo-2')
File "/usr/lib/python3/dist-packages/cairocffi/init.py", line 43, in dlopen
raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "src/main.py", line 5, in
from renderer.main import MainRenderer
File "/home/pi/nhl-led-scoreboard/src/renderer/main.py", line 5, in
from boards.boards import Boards
File "/home/pi/nhl-led-scoreboard/src/boards/boards.py", line 7, in
from boards.scoreticker import Scoreticker
File "/home/pi/nhl-led-scoreboard/src/boards/scoreticker.py", line 7, in
from renderer.scoreboard import ScoreboardRenderer
File "/home/pi/nhl-led-scoreboard/src/renderer/scoreboard.py", line 3, in
from renderer.logos import LogoRenderer
File "/home/pi/nhl-led-scoreboard/src/renderer/logos.py", line 3, in
from images.image_helper import ImageHelper
File "/home/pi/nhl-led-scoreboard/src/images/image_helper.py", line 2, in
import cairosvg
File "/usr/lib/python3/dist-packages/cairosvg/init.py", line 27, in
from . import surface
File "/usr/lib/python3/dist-packages/cairosvg/surface/init.py", line 30, in
import cairo # pycairo
ModuleNotFoundError: No module named 'cairo'`