Matplotlib, Numpy, SciPy auf dem Mac installieren

Probleme bei der Installation?
Antworten
TeeJot0815
User
Beiträge: 2
Registriert: Mittwoch 12. Oktober 2016, 18:35

Moin,
ich mache ein berufsbegleitendes Studium und meine C+ Zeit ist schon lange her.
Für meine Thesis würde ich gerne ein paar Algorithmen erstellen und plotten lassen.
Nachdem mir Excel auf den Zeiger ging und mir ein Freund gezeigt hat, was Python so kann war ich überzeugt. Jetzt geht es daran diese Sprache zu lernen und dann die Grafen für die Arbeit zu plotten.
Aber: wie installiere ich das auf einem Mac?

Ich habe mir heute Python 3 runtergezogen und installiert. Gut.
Ich kann über IDLE Code schreiben. Gut.
Aber wie kann ich Grafen plotten lassen?
Habe mir Matplotlib runtergeladen - und nun. Das ist ja leider keine exe Datei?

Ich denke, das es irgendwo hinterlegt werden muss, und dann über import aufgerufen werden muss.
Jetzt suche ich schon seit Stunden nach einer Lösung, daher die Bitte an dieses Forum.

Vielen Dank,
Toby
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@TeeJot0815: Python-Pakete installiert man üblicherweise per pip. Im Terminal (bash):
[codebox=bash file=Unbenannt.bsh]pip3 install matplotlib[/code]
TeeJot0815
User
Beiträge: 2
Registriert: Mittwoch 12. Oktober 2016, 18:35

Vielen Dank für die Antwort.
Leider konnte ich mit Pip auch nichts anfangen, weil es sich auch nicht um eine exe Datei handelt.

Ich konnte das Problem lösen, indem ich mir "Canopy" runter geladen haben. Darin enthalten sind alle wichtigen Bibliotheken, die man zum Plotten von Funktionen braucht.
Alternativ kann man auch Anaconda oder für Windows Python(x,y) wählen.

Somit steht meinem Einstieg in die Programmierung mit Python nichts mehr im Wege.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Wie hast du denn per Anaconda die Bibliotheken in IDLE bekommen.

Habe mir die myenv aktiviert und die Bibliotheken über den Terminal installiert. Darin kann ich sie importieren.

Wenn ich IDLE dann öffne und die Bibliotheken importieren möchte kommt:

Code: Alles auswählen

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import scipy
ModuleNotFoundError: No module named 'scipy'
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

IDLE benutzt den Standard-Interpreter. Nicht den aus dem venv. Entweder kannst du das irgendwo einstellen, oder du benutzt IDLE nur zum bearbeiten von sourcen, und fuehrst deinen Code immer in der Shell aus. Ist eh zu empfehlen.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Ich bin überfragt... dachte mein Skript wird immer von der Shell ausgeführt.

Habe in der Python 3.7.0 Shell
import scipy
eingegeben, wobei dann die obige Fehlermeldung kommt.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dein venv hat einen eigenen Python-Interpreter. Wenn du das venv aktivierst, kannst du den mit "python" aufrufen. Aber wenn du IDLE startest, dann ist 'python' immer noch der standart Python Interpreter. NICHT irgendein aktiviertes venv.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Ich habe jetzt

Code: Alles auswählen

python3.7 -m pip install numpy
direkt in den Terminal reingeschrieben und dadurch kann ich im IDLE Skript dann numpy, Matplotlib etc verwenden...
Mag mir einer erklären warum?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@naheliegend: Weil Du das ohne aktives venv gemacht hast, oder python3.7 gibt's in dem venv nicht, und damit hast Du dann eine Installation ausserhalb des venvs, mindestens für den Benutzer gemacht.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Und wofür braucht man die venv?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Um eine in sich geschlossene Umgebung mit allen Abhängigkeiten zu haben die von nichts ausserhalb beeinflusst wird und ihrerseits nichts anderes beeinflusst. Normalerweise erstellt man sich dann auch eine `requirements.txt` für `pip`, so dass man sich genau diese Umgebung leicht auf einem anderen Rechner oder in einer neuen venv erstellen kann.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Danke für deine Antworten. Kannst du irgendwas empfehlen um solche Sachen zu lernen?

Komme aus der Matlab und SPS-Programmierung... da ist alles immer relativ straight forward gewesen.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

`venv` ist ja mittlerweile Bestandteil der Python-Standardbibliothek, also gibt es dort auch Dokumentation. In der Dokumentation zu dem Modul ist das „Python Enhancement Proposal“ (PEP) dazu verlinkt, und PEPs enthalten üblicherweise auch einen Abschnitt zur Motivation warum etwas eingeführt werden soll(te). Externen Links in der Python-Dokumentation lohnt es sich auch oft zu folgen. In diesem Fall beispielsweise dem zum „Python Packaging User Guide“ und den dort enthaltenen Tutorials.

Ich finde in Python eigentlich auch alles relativ „straight forward“. Das liegt vielleicht einfach daran was man gewohnt ist. Man ist ja auch nicht gezwungen mit venvs zu arbeiten. Andererseits hat so ziemlich jede aktuelle Programmiersprache etwas in dieser Art um Abhängigkeiten zu verwalten und Projekte voneinander zu isolieren. Das wird heutzutage erwartet, das es zumindest diese Möglichkeit gibt.

Aktueller Stand der Technik befindet sich übrigens jetzt wieder ”ausserhalb” der Standardbibliothek, nachdem `pip` und `venv` dort angekommen sind, und nennt sich `pipenv`. Ein Werkzeug das `pip` und `venv`/`virtualenv` verbindet und etwas erweitert.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten