[SOLVED] Can't import RPi.GPIO nor gpiozero properly without getting error

February 24, 2024, 10:42

tarkaguy

Hello, I want to do some testing for my upcoming project but for some reason I can't import any of the GPIO libraries without getting errors after running a simple python example code. The first problem was that I couldn't use pip3 or pip without creating and running in a Python venv which isn't a problem but the other problems were confusing and I couldn't find proper solutions. When I use gpiozero/RPi.GPIO without running as root it sends error RuntimeError: No access to /dev/mem. Try running as root! When I use RPi.GPIO doesn't load the functions and I'm not able to use the library. ModuleNotFoundError: No module named 'RPi' When I run in the code as root sudo python3 main.py it sends out an error ModuleNotFoundError: No module named 'gpiozero' Code using gpiozero
python
import gpiozero as GPIO

from time import sleep

red = GPIO.LED(14)

while True:
    red.on()
    sleep(1)
    red.off()
    sleep(1)
code using RPi.GPIO
python
import RPi.GPIO as gpio
import time

gpio.setmode(gpio.BCM)
gpio.setup(14, gpio.OUT)

while True:
    time.sleep(1)
    gpio.output(14, gpio.HIGH)
    time.sleep(1)
    gpio.output(14, gpio.LOW)
It might be a rookie mistake since this is the first time using RPi5 GPIO in Linux server OS

k9t33n

so have you done pip install gpiozero? or sudo apt install gpiozero if that doesn't work

tarkaguy

I tried the first one lemme try the second one

tarkaguy

vitek@vitekrpi5:~$ sudo apt install gpiozero
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package gpiozero

k9t33n

what did pip install say?

tarkaguy

vitek@vitekrpi5:~$ pip install gpiozero
Requirement already satisfied: gpiozero in ./.venv/lib/python3.11/site-packages (2.0.1)
Requirement already satisfied: colorzero in ./.venv/lib/python3.11/site-packages (from gpiozero) (2.0)
Requirement already satisfied: setuptools in ./.venv/lib/python3.11/site-packages (from colorzero->gpiozero) (68.1.2)
vitek@vitekrpi5:~$ 

tarkaguy

I've done that already

tarkaguy

Its supposed to be installed

k9t33n

ok is this on raspberry pi os?

tarkaguy

No a Linux Server

k9t33n

what linux distro?

tarkaguy

Ubuntu

k9t33n

ok

tarkaguy

Ubuntu server for RPI5 from pi imager

tarkaguy

to be exact

k9t33n

now run that gpio zero script with sudo

k9t33n

actually do pip install as sudo

k9t33n

pip3 install to rule out any problems

tarkaguy

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

k9t33n

thought itd do that

tarkaguy

sudo pip3 install gpiozero

tarkaguy

yeah

tarkaguy

I'm in py venv

k9t33n

have you activated that?

k9t33n

it wouldnt return that error if so

tarkaguy

I suppose so it has the (.venv) at the start but ill check it

tarkaguy

Now there are two

tarkaguy

(.venv) (.venv) vitek@vitekrpi5:~$

k9t33n

ha ha

tarkaguy

and sends out the same error

tarkaguy

without sudo it works

k9t33n

the gpio zero script?

tarkaguy

python
import gpiozero as GPIO

from time import sleep

red = GPIO.LED(14)

while True:
    red.on()
    sleep(1)
    red.off()
    sleep(1)

k9t33n

yeah but does that work now or..?

tarkaguy

.venv) (.venv) vitek@vitekrpi5:~$ sudo python3 main.py
Traceback (most recent call last):
  File "/home/vitek/main.py", line 1, in <module>
    import gpiozero as GPIO
ModuleNotFoundError: No module named 'gpiozero'

k9t33n

wdym by this tho?

tarkaguy

When I'm in the .venv I cant use sudo pip without getting the error: externally-managed-environment message

k9t33n

ohhh ok

k9t33n

run this for me sudo apt install python3-gpiozero

k9t33n

just found out i got the name wrong

tarkaguy

aha prommising

k9t33n

then run the gpiozero script in the venv without sudo

k9t33n

if that doesnt work do it out of the venv

tarkaguy

Oh shoot! It works!

k9t33n

great

tarkaguy

Thank you very much

k9t33n

im glad to help, i wish more people around here was like you tbh

k9t33n

you listen, you told me everything i needed to know and with good format. thanks i needed someone like this again

tarkaguy

haha no problem

k9t33n

bye now

tarkaguy

Cya

tarkaguy

Thanks again