lame dependency

Probleme bei der Installation?
Antworten
Ruepelzahl
User
Beiträge: 2
Registriert: Sonntag 23. April 2023, 10:24

Hallo.
Auf meinem iMac lassen sich Pygame und Pygame Zero nicht nutzen.

OSX 10.12.6 (ja, er ist schon etwas älter, aber für mich noch gut genug in Schuss), Python in vielen Versionen versucht, aktuell 3.10.10

Requirement already satisfied: Pygame in ./Library/Python/3.10/lib/python/site-packages (2.3.0)
Requirement already satisfied: pgzero in ./Library/Python/3.10/lib/python/site-packages (1.2.1)
Requirement already satisfied: pygame~=2.0 in ./Library/Python/3.10/lib/python/site-packages (from pgzero) (2.3.0)
Requirement already satisfied: numpy in ./Library/Python/3.10/lib/python/site-packages (from pgzero) (1.24.2)

Mini-Beispielprogramm:

import pgzrun

def draw():
screen.draw.text("Hallo von PyGame Easy", topleft = (10, 10))

pgzrun.go()

aufgerufen per IDLE mit Run/RunModule bringt:

=============================================================================== RESTART: /Users/Ruepelzahl/Entwicklungsprojekte/Python/pgzrun_test.py ===============================================================================
pygame 2.3.0 (SDL 2.24.2, Python 3.10.10)
Hello from the pygame community. https://www.pygame.org/contribute.html

Warning (from warnings module):
File "/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pgzero/runner.py", line 2
pygame.mixer.pre_init(frequency=22050, size=-16, channels=2)
RuntimeWarning: use mixer: dlopen(/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/mixer.cpython-310-darwin.so, 2): Library not loaded: @loader_path/libmp3lame.0.dylib
Referenced from: /Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libsndfile.1.0.34.dylib
Reason: no suitable image found. Did find:
/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
(ImportError: dlopen(/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/mixer.cpython-310-darwin.so, 2): Library not loaded: @loader_path/libmp3lame.0.dylib
Referenced from: /Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libsndfile.1.0.34.dylib
Reason: no suitable image found. Did find:
/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown))
Traceback (most recent call last):
File "/Users/Ruepelzahl/Entwicklungsprojekte/Python/pgzrun_test.py", line 1, in <module>
import pgzrun
File "/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pgzrun.py", line 13, in <module>
from pgzero.runner import prepare_mod, run_mod
File "/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pgzero/runner.py", line 2, in <module>
pygame.mixer.pre_init(frequency=22050, size=-16, channels=2)
File "/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/__init__.py", line 70, in __getattr__
raise NotImplementedError(missing_msg)
NotImplementedError: mixer module not available (ImportError: dlopen(/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/mixer.cpython-310-darwin.so, 2): Library not loaded: @loader_path/libmp3lame.0.dylib
Referenced from: /Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libsndfile.1.0.34.dylib
Reason: no suitable image found. Did find:
/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
/Users/Ruepelzahl/Library/Python/3.10/lib/python/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown))

Was kann man dagegen tun? Und wieso bin ich der Einzige mit diesem Problem?

Thx, Rpz
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich wuerde mal spekulieren, dass du eben ein zu altes System hast, und die vorgebauten Bibliotheken fuer dieses alte SDK nicht mehr funktionieren. Die Loesung besteht wahrscheinlich darin, entweder eine entsprechend alte Version von Python und den Bibliotheken zu verwenden, oder die Bibliotheken (und das meint dann libmp3lame und libsndfile etc) mit einem Xcode aus der Zeit selbst zu bauen. Auch alles eher ein unangenehmes Unterfangen. Oder es hat was mit ARM vs Intel zu tun.
Ruepelzahl
User
Beiträge: 2
Registriert: Sonntag 23. April 2023, 10:24

Altes SDK? Ich hatte Python und die mitgelieferte IDLE App für das SDK gehalten, und da ist 3.10 eher nicht besonders alt.
Eine ältere Version als 3.6 lässt mich die Installer App des iMac nicht installieren, und alle Versionen von 3.6 bis 3.11 bringen das identische Fehlverhalten. Selber bauen mit XCode überfordert mich leider. Wenn dem nicht so wäre, würde ich Objective C oder Swift verwenden, und nicht Python.
Ich habe zu meinem Gerät passend ausschließlich x86-64 Versionen ausprobiert, und alles was weder PyGame noch PyGame Zero verwendet funktioniert ja auch.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

OS 10.12 müsste Sierra gewesen sein. Das kam 2016 raus. Da hatte Apple vermutlich Python 3.4 oder vielleicht schon 3.5 mitgeliefert (neben 2.7). Auf einem Intel Mac kannst du die älteren Python-Versionen möglicherweise noch mit pyenv nachinstallieren und dann die dafür passende pygame Version verwenden.
Antworten