Page 1 of 1

NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Mon Jan 08, 2018 9:48 pm
by japlavaren
hello,

I have NanoPi M1 and I want to program GPIO pins with python. When I try to import module with "import RPi.GPIO" I get message "ImportError: No module named 'RPi'".

I have found, that RPi.GPIO should be installed by default on NanoPi NEO/NEO2/Air, but I can not find any article how to install it on NanoPi M1.

Can anyone help me, how to work with python RPi.GPIO on NanoPi M1 board?
I am using current armbian https://www.armbian.com/nanopi-m1/

Thank you. Jakub

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Tue Jan 09, 2018 9:35 am
by auto3000
I do not use friendlyelec images anymore, but yes, these images should contain RPi.GPIO_NP by default.

However, from a previous message at viewtopic.php?f=47&t=1151, a user was obliged to install RPI.GPIO by hand (with pip3). This procedure is invalid because RPI.GPIO is incompatible with NanoPI. You really need a RPI.GPIO_NP installation.

You must probably now build https://github.com/auto3000/RPi.GPIO_NP manually on friendlyelec images.

The INSTALL procedure is described at the end of https://github.com/auto3000/RPi.GPIO_NP ... NSTALL.txt.

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Tue Jan 09, 2018 7:38 pm
by japlavaren
hi,

I have tried described but with no success.

What I did:
- sudo apt-get install python-dev python3-dev
- git clone https://github.com/auto3000/RPi.GPIO_NP.git
- cd cd RPi.GPIO_NP
- sudo python setup.py install

I get few warnings but finally it was done successful.

But when I run python with "python" command and than try to "import RPi.GPIO_NP" i get error "ImportError: No module named GPIO_NP"

I have tried same with python3 but no success. Am I doing something wrong, or what is problem?

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Wed Jan 10, 2018 9:13 am
by auto3000
Please give a try with "import RPi.GPIO". For reference, you can find a working software based on this library at https://github.com/auto3000/pedalpii/bl ... II/main.py

For python3, I suspect you need to install with "python3 setup.py install".

To be honest, I never tried to install on friendlyelec images, but some users did it successfully.

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Wed Jan 10, 2018 2:00 pm
by japlavaren
I have found, that package is successfully installed, but there is no code. When I try import RPi.GPIO_NP there is no directory GPIO_NP in RPi folder: https://github.com/auto3000/RPi.GPIO_NP/tree/master/RPi
When I try import RPi.GPIO, there is GPIO directory but is empty, except __init__ where is "from RPi._GPIO import *" pointing to not existing directory _GPIO

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Wed Jan 10, 2018 4:23 pm
by auto3000
About _GPIO, it could be fine. This symbol is implemented in a native library (.so), you can refer at line 976 of https://github.com/auto3000/RPi.GPIO_NP ... /py_gpio.c for any doubts.

I think you should be able to call RPI.GPIO procedures with your environment now.

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Wed Jan 10, 2018 7:09 pm
by japlavaren
I have pulled new changes and run setup again. But with no success:

command import RPi.GPIO cause:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "RPi/GPIO/__init__.py", line 23, in <module>
from RPi._GPIO import *
ImportError: No module named _GPIO

and cmd import RPi.GPIO_NP cause:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named GPIO_NP

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Wed Jan 10, 2018 9:24 pm
by japlavaren
I am attaching install log, maybe it will helps:

Code: Select all

udo python setup.py install
running install
running build
running build_py
running build_ext
building 'RPi._GPIO' extension
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/py_gpio.c -o build/temp.linux-armv7l-2.7/source/py_gpio.o
source/py_gpio.c: In function 'init_GPIO':
source/py_gpio.c:1034:16: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
    pin_to_gpio = &pin_to_gpio_nanopi;
                ^
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/c_gpio.c -o build/temp.linux-armv7l-2.7/source/c_gpio.o
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/cpuinfo.c -o build/temp.linux-armv7l-2.7/source/cpuinfo.o
source/cpuinfo.c: In function 'get_rpi_info':
source/cpuinfo.c:41:7: warning: ignoring return value of 'fgets', declared with attribute warn_unused_result [-Wunused-result]
       fgets(buffer, sizeof(buffer), fp);
       ^
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/event_gpio.c -o build/temp.linux-armv7l-2.7/source/event_gpio.o
source/event_gpio.c: In function 'gpio_export':
source/event_gpio.c:64:5: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
     write(fd, str_gpio, len);
     ^
source/event_gpio.c: In function 'gpio_unexport':
source/event_gpio.c:79:5: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
     write(fd, str_gpio, len);
     ^
source/event_gpio.c: In function 'gpio_set_direction':
source/event_gpio.c:106:9: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
         write(fd, "in", 3);
         ^
source/event_gpio.c:108:9: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
         write(fd, "out", 4);
         ^
source/event_gpio.c: In function 'gpio_set_edge':
source/event_gpio.c:124:5: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
     write(fd, stredge[edge], strlen(stredge[edge]) + 1);
     ^
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/soft_pwm.c -o build/temp.linux-armv7l-2.7/source/soft_pwm.o
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/py_pwm.c -o build/temp.linux-armv7l-2.7/source/py_pwm.o
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/common.c -o build/temp.linux-armv7l-2.7/source/common.o
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c source/constants.c -o build/temp.linux-armv7l-2.7/source/constants.o
arm-linux-gnueabihf-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-armv7l-2.7/source/py_gpio.o build/temp.linux-armv7l-2.7/source/c_gpio.o build/temp.linux-armv7l-2.7/source/cpuinfo.o build/temp.linux-armv7l-2.7/source/event_gpio.o build/temp.linux-armv7l-2.7/source/soft_pwm.o build/temp.linux-armv7l-2.7/source/py_pwm.o build/temp.linux-armv7l-2.7/source/common.o build/temp.linux-armv7l-2.7/source/constants.o -o build/lib.linux-armv7l-2.7/RPi/_GPIO.so
running install_lib
creating /usr/local/lib/python2.7/dist-packages/RPi
copying build/lib.linux-armv7l-2.7/RPi/_GPIO.so -> /usr/local/lib/python2.7/dist-packages/RPi
copying build/lib.linux-armv7l-2.7/RPi/__init__.py -> /usr/local/lib/python2.7/dist-packages/RPi
creating /usr/local/lib/python2.7/dist-packages/RPi/GPIO
copying build/lib.linux-armv7l-2.7/RPi/GPIO/__init__.py -> /usr/local/lib/python2.7/dist-packages/RPi/GPIO
byte-compiling /usr/local/lib/python2.7/dist-packages/RPi/__init__.py to __init__.pyc
byte-compiling /usr/local/lib/python2.7/dist-packages/RPi/GPIO/__init__.py to __init__.pyc
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/RPi.GPIO-0.6.3.egg-info

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Thu Jan 11, 2018 8:29 am
by auto3000
Thanks for the detailed logs, really.

I don't know if that matters, probably it doesn't, but I can see there is a copy in /usr/"local"/lib during installation. Maybe python3 would give same results (sudo python3 setup.py install....)

Code: Select all

copying build/lib.linux-armv7l-2.7/RPi/_GPIO.so -> /usr/local/lib/python2.7/dist-packages/RPi
...


I will give a try on next weekend.

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Mon Jan 15, 2018 10:29 am
by auto3000
Sorry japlavaren, I did play with a different stuff this weekend, I have to postpone my investigation about python installation for later.

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Sun Jan 21, 2018 9:12 pm
by auto3000
The software documentation has been updated. Please check INSTALL.txt and README.md in latest release.

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Tue Feb 06, 2018 12:54 pm
by japlavaren
hi,

I have tried new install, but after running "python setup.py install" getting error:

Code: Select all

source/py_gpio.c:23:20: fatal error: Python.h: No such file or directory
 #include "Python.h"
                    ^
compilation terminated.


any idea what to do?
thank you

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Tue Feb 06, 2018 1:02 pm
by japlavaren
I have found, that "sudo apt-get install python-dev" helps with #include "Python.h" problem

Than i runned "python setup.py install" but still getting error in python:

Code: Select all

import RPi.GPIO as GPIO
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "RPi/GPIO/__init__.py", line 23, in <module>
    from RPi._GPIO import *
ImportError: No module named _GPIO


with import RPi._GPIO getting same error

Re: NanoPi M1 python RPi.GPIO - ImportError: No module

Posted: Fri May 04, 2018 1:18 pm
by evolentini
I do not know why, but if you run python from the directory that contains the RPi.GPIO code gives that error. You must change directory before running python. The sequence would look like this:

Code: Select all

git clone https://github.com/auto3000/RPi.GPIO_NP
cd RPi.GPIO_NP
python3 setup.py install
cd ..
python3


Code: Select all

 >>> import RPi.GPIO as GPIO