Python 3.8.4 installiert muss immer python3 voranstellen

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Chronos81
User
Beiträge: 8
Registriert: Dienstag 2. Februar 2021, 15:58

Hallo zusammen,
ich bin absoluter Anfänger und habe ein bestehendes python script mit der Methode Requests erweitert. wenn ich nun in meinem Raspberry das Programm in der Konsole ausführen will muss ich immer python3 voranstellen da sonst die Methode nicht erkannt wird.
Ich habe so wie ich das sehe nur Python in der Version 3.8.4 installiert. kann ich irgendwie einstellen dass immer dies verwendet wird so dass ich mir das python3 sparen kann? Wäre cool, da ich das Skript in bestimmten Zeitabständen per Cronjob laufen lassen möchte.

Ich danke euch für eine Rückinfo.

pi@pizisterne:~ $ python3 -V
Python 3.8.4
pi@pizisterne:~ $ python -V
Python 3.8.4
pi@pizisterne:~ $ echo "alias python=python3.8" >> ~/.bashrc
pi@pizisterne:~ $ /home/pi/heizoeltestiobroker.py
Traceback (most recent call last):
File "/home/pi/heizoeltestiobroker.py", line 7, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Du benutzt gar nicht `bash`, sondern die shebang-Zeile.
Wie lautet die in /home/pi/heizoeltestiobroker.py?
Chronos81
User
Beiträge: 8
Registriert: Dienstag 2. Februar 2021, 15:58

Sirius3 hat geschrieben: Montag 3. April 2023, 09:07 Du benutzt gar nicht `bash`, sondern die shebang-Zeile.
Wie lautet die in /home/pi/heizoeltestiobroker.py?
So sieht der Beginn der Datei mit shebang aus. Ich weiß aber nicht ob das Doppelkreuz als Kommentar interpretiert wird.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time
import datetime
import RPi.GPIO as GPIO
import json
import requests
Benutzeravatar
Dennis89
User
Beiträge: 1156
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

#! leitet den Shebang ein.

Alternativ

Code: Alles auswählen

#!/usr/bin/env python3
Ist die Datei ausführbar?

Code: Alles auswählen

chmod +x /home/pi/heizoeltestiobroker.py
Dann solltest du sie starten können. Wenn du zum Beispiel in '/home/pi' bist, mit

Code: Alles auswählen

./heizoeltestiobroker.py
Grüße
Dennis

Edit: Die Zeile mit dem Encoding kann bei Python3 weg.
"When I got the music, I got a place to go" [Rancid, 1993]
Chronos81
User
Beiträge: 8
Registriert: Dienstag 2. Februar 2021, 15:58

Hallo Dennis,
ich habe alles ausgeführt wie du gesagt hast. Mal mit env mal ohne. Die chmod +x habe ich auch gemacht immer das gleiche Ergebnis. Hierbei ist es auch egal gewesen ob ich bei der Ausführung den Pfad angebe oder ./

:-(

pi@pizisterne:~ $ sudo nano heizoeltestiobroker.py
pi@pizisterne:~ $ sudo chmod +x /home/pi/heizoeltestiobroker.py
pi@pizisterne:~ $ ./heizoeltestiobroker.py
Traceback (most recent call last):
File "./heizoeltestiobroker.py", line 7, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Pack doch einfach python3 in den shebang, oder einfach in Cron. Das ist doch kein substantieller Unterschied.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nachtrag: wie kannst du denn requests importieren? Also, hast du ein Kommando, wo das geht? Dann fuer mal bitte "import requests; print(requests)" aus, damit man versteht, wohin das installiert wurde.
Chronos81
User
Beiträge: 8
Registriert: Dienstag 2. Februar 2021, 15:58

Hi,
ich habe es auf verschiedene Arten im Cronaufruf versucht. Keiner will das Skript ausführbar machen.
was nicht funktioniert hat:
50 * * * * cd /home/pi && python3 heizoeltestiobroker.py
50 * * * * /home/pi/ python3 heizoeltestiobroker.py
Vielleicht mache ich hier im Aufruf von Cron auch was falsch.
__deets__ hat geschrieben: Montag 3. April 2023, 10:17 Nachtrag: wie kannst du denn requests importieren? Also, hast du ein Kommando, wo das geht? Dann fuer mal bitte "import requests; print(requests)" aus, damit man versteht, wohin das installiert wurde.

Hier mal noch print(requests)
<module 'requests' from '/home/pi/.local/lib/python3.8/site-packages/requests/__init__.py'>
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da haben wir ja schon diverse Probleme:

- Der Pfad zum Skript muss in der crontab absolut sein. Nicht relativ, wie du es gemacht hast. Denn das liegt ja irgendwo im user-Verzeichnis, oder?
- Das Modul requests ist lokal fuer den User Pi installiert. NICHT global, fuer alle. Der cron-job laeuft aber als root. Also geht das auch nicht.

Als Abhilfe solltes du das Modul global installieren. Entweder mit der entsprechenden pip-Option. Oder einfach schauen, ob das nicht per Paketmanagement (apt-get etc) installiert werden kann.
Chronos81
User
Beiträge: 8
Registriert: Dienstag 2. Februar 2021, 15:58

Hi Deets,
jetzt hat's geklappt. Tatsächlich war der Grund das das Modul auf Userebene und nicht lokal installiert wurde. ich habe das nun deinstalliert und erneut mit sudo global installiert und jetzt läuft es auch.

Danke für eure Hilfe.
Antworten