Modulpfad - Python-Dummy

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
wonk
User
Beiträge: 4
Registriert: Mittwoch 15. November 2023, 21:29

Hallo,
sorry, Python-Anfänger. Ich habe ein unter einer älteren Raspi-Installation laufendes Python3-Programm auf eine neuere Raspi-Installation kopiert. Dort läuft es nicht mehr, weil bei "import mysql" das Modul nicht gefunden wird. Andere Module werden gefunden. Bei einem Versuch zur Modulinstallation erhalte ich:

Code: Alles auswählen

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: mysql in ./.local/lib/python3.9/site-packages (0.0.3)
Requirement already satisfied: mysqlclient in ./.local/lib/python3.9/site-packages (from mysql) (2.2.0)
Ich habe schon versucht an Stelle des Modulsnamens den kompletten Pfad anzugeben, klappt aber nicht. Die Google-Ergebnisse konnte ich auch nicht richtig verarbeiten. Was tun?
Gruss, wonk
Benutzeravatar
Dennis89
User
Beiträge: 1156
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

wie rufst du das Programm genau auf und wie sieht die vollständige Fehlermeldung aus?



Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
wonk
User
Beiträge: 4
Registriert: Mittwoch 15. November 2023, 21:29

pi@RasPiNeu:~ $ python3 hutzaehler.py
Traceback (most recent call last):
File "/home/pi/hutzaehler.py", line 17, in <module>
import mysql
ModuleNotFoundError: No module named 'mysql'
Gruss, wonk
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@wonk Das ``python3`` ist auch die Version 3.9 und der Benutzer ist der gleiche für den die Ausgabe aus dem ersten Beitrag ist? Denn dort sind die Module ja für einen Benutzer installiert und nicht systemweit.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

Hallo
Scheint ein Problem mit Abhängikeiten zu sein.

installier mal zunächst:

Code: Alles auswählen

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
und dann

Code: Alles auswählen

pip install mysql --break-system-packages
/edit: ups zusätzlich:

Code: Alles auswählen

pip install mysql-connector-python --break-system-packages
/edit

Siehe dazu https://askubuntu.com/questions/1321141 ... untu-20-10
wonk
User
Beiträge: 4
Registriert: Mittwoch 15. November 2023, 21:29

Hallo!
Zu @_blackjack_: Verstehe ich nicht, besonders nicht, was ich da tun muss.
Zu @karolus: Die erste Zeile lief problemlos durch die 2. nicht mehr, mit einem "-" weniger dann:

Code: Alles auswählen

pi@RasPiNeu:~ $ pi@RasPiNeu:~ $ pip install mysql -break-system-packages
DEPRECATION: The -b/--build/--build-dir/--build-directory option is deprecated and has no effect anymore. pip 21.1 will remove support for this functionality. A possible replacement is use the TMPDIR/TEMP/TMP environment variable, possibly combined with --no-clean. You can find discussion regarding this at https://github.com/pypa/pip/issues/8333.
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: mysql in ./.local/lib/python3.9/site-packages (0.0.3)
Requirement already satisfied: mysqlclient in ./.local/lib/python3.9/site-packages (from mysql) (2.2.0)


pi@RasPiNeu:~ $ pip install mysql-connector-python -break-system-packages
DEPRECATION: The -b/--build/--build-dir/--build-directory option is deprecated and has no effect anymore. pip 21.1 will remove support for this functionality. A possible replacement is use the TMPDIR/TEMP/TMP environment variable, possibly combined with --no-clean. You can find discussion regarding this at https://github.com/pypa/pip/issues/8333.
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting mysql-connector-python
  Downloading mysql_connector_python-8.2.0-py2.py3-none-any.whl (593 kB)
     |████████████████████████████████| 593 kB 2.7 MB/s
Collecting protobuf<=4.21.12,>=4.21.1
  Downloading https://www.piwheels.org/simple/protobuf/protobuf-4.21.12-py2.py3-none-any.whl (165 kB)
     |████████████████████████████████| 165 kB 1.4 MB/s
Installing collected packages: protobuf, mysql-connector-python
Successfully installed mysql-connector-python-8.2.0 protobuf-4.21.12
pi@RasPiNeu:~ $
Ich weiß zwar nicht, was ich da gemacht habe, anscheinend muss man wohl mysql-connector-python zusätzlich installieren. Der mysql-Fehler tritt jetzt nicht mehr auf. Danke!
Gruss, wonk
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@wonk: Das ``-break-system-packages`` macht sicher nicht was Du denkst. Das legt das „build directoy“ fest (``-b``) und danach kommt dann ``reak-system-packages``. Da fehlt ein ``-`` wenn das ``--break-system-packages`` heissen sollte. Aber das will man nicht. Oder *willst* Du Dir das System kaputt machen?

Du willst oder wolltest `mysql` *gar nicht* installieren, denn das Modul zu dem Package heisst `MySQLdb`. Wenn Du also kein ``import MySQLdb`` im Programm stehen hast, dann kannst Du mit dem PyPI-Package `mysql` nix anfangen.

`mysql-connector-python` ist das PyPI-Package das `mysql` zum Importieren zur Verfügung stellt. Das muss nicht zusätzlich installiert werden, sondern *das* muss installiert werden.

`mysql` und `mysqlclient` kannst Du wieder deinstallieren falls nicht irgendein anderes Programm von Dir das braucht.

Und bitte ``--break-system-packages`` vergessen. Das ist doch schon so benannt das man sich dreimal überlegt ob man das wirklich will. Sei froh das Du den Tippfehler gemacht hast.

@karolus: Böse! ☹️
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

@wonk:
Du solltest vielleicht mal:

Code: Alles auswählen

pip install pip --upgrade --user
@__blackjack__ : Schön … aber ohne --break-system-packages müsste ich ständig mit einem python-env arbeiten.
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

karolus hat geschrieben: Freitag 17. November 2023, 14:40 @__blackjack__ : Schön … aber ohne --break-system-packages müsste ich ständig mit einem python-env arbeiten.
Ja, das ist genau das Ziel. Weil man sich sonst (wie die Option deutlich sagt) die System-Packages kaputt macht.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

@karolus: das sollte man auch, und es ist auch trivial, wenn man statt Aktivierung wahlweise sowas wie pipenv oder poetry benutzt, oder einfach den vollen Pfad zum
Venv Interpreter.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Naja oder man installiert für den Benutzer, wie das hier ja auch passiert ist.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
wonk
User
Beiträge: 4
Registriert: Mittwoch 15. November 2023, 21:29

Hallo,
bei Euren Fachgesprächen bin ich raus. Trotzdem danke!
Da Ihr aber vom env redet: Wieso muss ich trotz #!/usr/bin/env python3 in der ersten Code-Zeile immer mit "python3 ....py" starten, warum nicht nur "....py"? Das "Ausführen-Flag" habe ich gesetzt.
Gruss, wonk
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

Hallo
@narpfel @__deets__
Ich hab die Nachricht vernommen, und werde meine Gewohnheiten ändern.
Ich kann nur nicht ganz nachvollziehen wieso ich mit einer Installation in /home/~.local/lib/ … /site-packages/ mein system kaputt machen sollte?
(sebstverständlich verwende ich pip niemals per `sudo` ) ansonsten gibts die Option auch erst seit diesem Jahr, war pip dann vorher grundsätzlich böse?
und es ist auch trivial,
jain, Mein site-packages -Verzeichnis findet ein Python-interpreter der gebündelt zusammen mit LibreOffice als **flatpak** (1) daherkommt ohne Gefrickel (sofern die selben python-minor-versionen benutzt werden) das …site-packages-Verzeichnis eines …venvs nicht so ohne weiteres Zutun.

(1) Ich würde ja gerne auf flatpak verzichten, leider ist es momentan die einzige (2) Möglichkeit ein etwas aktuelleres libreoffice auf einen RaspberryPi zu testen.
(2) ja es gibt auch noch snap
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@karolus: Wer sagt denn das eine Installation in das Heimatverzeichnis das System kaputt macht? Genau das hat der OP doch gemacht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten