Seite 1 von 1

Modulpfad - Python-Dummy

Verfasst: Mittwoch 15. November 2023, 21:45
von wonk
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?

Re: Modulpfad - Python-Dummy

Verfasst: Mittwoch 15. November 2023, 22:19
von Dennis89
Hallo,

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



Grüße
Dennis

Re: Modulpfad - Python-Dummy

Verfasst: Donnerstag 16. November 2023, 10:20
von wonk
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'

Re: Modulpfad - Python-Dummy

Verfasst: Donnerstag 16. November 2023, 15:56
von __blackjack__
@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.

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 09:00
von karolus
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

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 14:04
von wonk
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!

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 14:37
von __blackjack__
@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! ☹️

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 14:40
von karolus
@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.

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 18:36
von narpfel
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.

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 19:05
von __deets__
@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.

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 19:42
von __blackjack__
Naja oder man installiert für den Benutzer, wie das hier ja auch passiert ist.

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 19:49
von wonk
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.

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 20:45
von karolus
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

Re: Modulpfad - Python-Dummy

Verfasst: Freitag 17. November 2023, 22:30
von __blackjack__
@karolus: Wer sagt denn das eine Installation in das Heimatverzeichnis das System kaputt macht? Genau das hat der OP doch gemacht.