CCS811 von Adafruit: Beispiel in Python2 kein Problem aber in Python3

  • Hallo wieder einmal, Habe den CCS811 schnell mit Python2 in Betrieb genommen. Die Umstellung auf Python3 ist mir unklar. Einfach ist das umeditieren der Beispieles CCS811_example.py (nur die Klammern beim Print). Python 3 findet aber den Module Adafruit_CCS811 nicht. Wo kann der sein - offensichtlich bei python2 ... aber wo genau. Wenn ich das weiß, kann ich ja mit sys.path.append(..) den dazunehmen.


    Bitte um Hilfe


    Danke


    Gottfried

  • Hallo,


    Quote

    Wenn ich das weiß, kann ich ja mit sys.path.append(..) den dazunehmen.

    Auf keine Fall, das geht schief.


    Wie Linus schon sagte, für Python 3 brauchst du eigene Module. Module für Python 2 und 3 können problemlos und konfliktfrei parallel installiert werden.


    Gruß, noisefloor

  • Hallo,

    also ich brauche da noch Nachhilfe. Was habe ich gemacht:

    +++

    Code
    cd ~/
    git clone https://github.com/adafruit/Adafruit_CCS811_python.git
    cd Adafruit_CCS811_python/examples
    sudo python CCS811_example.py

    ---

    und dann funktionierte das Ding in Py2. Nach dem Hinweis mit pip3 war ich zuversichtlich und machte folgendes:

    +++

    cd /home/pi/sources

    git clone https://github.com/adafruit/Adafruit_CCS811_python.git

    oder?

    pip3 install Adafruit_CCS811

    cd Adafruit_CCS811_python/examples

    sudo python3 CCS811_example.py

    ---

    und handle mir folgendes ein:

    +++

    ImportError: No module named 'Adafruit bitfield'


    Bitte um einen Hinweis


    Danke


    Gottfried

  • Hallo,


    du musst schon die Befehle und deren Ausgabe anzeigen, sonst ist das alles nur raten.


    Hat pip die Abhängigkeiten installiert, die auf der Github Seite aufgeführt sind? Was passiert, wenn du das Skript ohne Root-Rechte ausführst?


    Gruß, noisefloor

  • Sorry ...

    $ sudo pip3 install Adafruit_CCS811

    Collecting Adafruit_CCS811

    Downloading https://www.piwheels.org/simpl…11-0.2.1-py3-none-any.whl

    Collecting Adafruit-bitfield>=1.5 (from Adafruit_CCS811)

    Downloading https://www.piwheels.org/simpl…ld-1.5.1-py3-none-any.whl

    Collecting Adafruit-GPIO>=0.6.5 (from Adafruit_CCS811)

    Downloading https://www.piwheels.org/simpl…IO-1.0.3-py3-none-any.whl

    Requirement already satisfied: spidev in /usr/lib/python3/dist-packages (from Adafruit-GPIO>=0.6.5->Adafruit_CCS811)

    Requirement already satisfied: adafruit-pureio in /usr/local/lib/python3.5/dist-packages (from Adafruit-GPIO>=0.6.5->Adafruit_CCS811)

    Installing collected packages: Adafruit-bitfield, Adafruit-GPIO, Adafruit-CCS811

    Successfully installed Adafruit-CCS811-0.2.1 Adafruit-GPIO-1.0.3 Adafruit-bitfield-1.5.1


    $ sudo pip3 install Adafruit_CircuitPython_CCS811

    Collecting Adafruit_CircuitPython_CCS811

    Downloading https://www.piwheels.org/simpl…11-1.1.5-py3-none-any.whl

    Requirement already satisfied: Adafruit-Blinka in /usr/local/lib/python3.5/dist-packages (from Adafruit_CircuitPython_CCS811)

    Collecting adafruit-circuitpython-register (from Adafruit_CircuitPython_CCS811)

    Downloading https://www.piwheels.org/simpl…er-1.7.1-py3-none-any.whl

    Requirement already satisfied: adafruit-circuitpython-busdevice in /usr/local/lib/python3.5/dist-packages (from Adafruit_CircuitPython_CCS811)

    Requirement already satisfied: sysv-ipc; platform_system != "Windows" in /usr/local/lib/python3.5/dist-packages (from Adafruit-Blinka->Adafruit_CircuitPython_CCS811)

    Requirement already satisfied: RPi.GPIO; platform_machine == "armv7l" or platform_machine == "armv6l" in /usr/lib/python3/dist-packages (from Adafruit-Blinka->Adafruit_CircuitPython_CCS811)

    Requirement already satisfied: rpi-ws281x>=4.0.0; platform_machine == "armv7l" or platform_machine == "armv6l" in /usr/local/lib/python3.5/dist-packages (from Adafruit-Blinka->Adafruit_CircuitPython_CCS811)

    Requirement already satisfied: Adafruit-PlatformDetect in /usr/local/lib/python3.5/dist-packages (from Adafruit-Blinka->Adafruit_CircuitPython_CCS811)

    Requirement already satisfied: Adafruit-PureIO in /usr/local/lib/python3.5/dist-packages (from Adafruit-Blinka->Adafruit_CircuitPython_CCS811)

    Requirement already satisfied: spidev; sys_platform == "linux" in /usr/lib/python3/dist-packages (from Adafruit-Blinka->Adafruit_CircuitPython_CCS811)

    Installing collected packages: adafruit-circuitpython-register, Adafruit-CircuitPython-CCS811

    Successfully installed Adafruit-CircuitPython-CCS811-1.1.5 adafruit-circuitpython-register-1.7.1


    ...und ALLES funktioniert....

    Ich entschuldige mich für meine ... Schusseligkeit

    Aber Du hast mich beharrlich zur Lösung geführt und dabei mich dazu gebracht mich (ein wenig) mit den Grundsätzen auseinanderzusetzen


    Danke


    Gottfried

  • sudo pip[3] ... ist ganz ganz GANZ GANZ schlecht - damit installierst du i.d.R. mal eben in die Systeminstallation von Python. Kann ordentlich was kaputt machen, muss aber nicht. Besser mit dem --user flag eine per-User Installation durchführen. Noch viel besser ist ein Virtualenv.


    Ganz davon abgesehen kann mit sudo bei der Installation u.U. ausgeführter Schadcode (Pakete im PyPI werden nicht geprüft!) deutlich mehr anrichten - oder prüfst du vorher jede Datei in der heruntergeladenen .tar.gz / .whl?


    Siehe auch https://dev.to/elabftw/stop-using-sudo-pip-install-52mn


    Edit: --user heißt's natürlich. Danke, Hofei!

  • Das ist sicher sicherer ... aber wo ist die Kurzbeschreibung aller mir unklaren Worte wie "User Installation", "Virtualenv" was ist das und ... und ... und...

  • Hallo,


    Quote

    aber wo ist die Kurzbeschreibung aller mir unklaren Worte wie "User Installation", "Virtualenv" was ist das und ... und ... und...

    So als Übersicht / Startpunkt:


    https://wiki.ubuntuusers.de/pip/

    https://wiki.ubuntuusers.de/virtualenv/


    Besonders virtual envs bieten sich _sehr_ an. Auch, wenn du ein Skript später automatischen starten willst, ist das kein Problem. In der entsprechenden systemd Service Unit halt erst das virtual env aktivieren und dann das Skript starten.


    Gruß, noisefloor