Wenn auf den neuen MBPs (M1) Python3 vorinstalliert ist, warum werden dann keine Python-Skripte in der Shell ausgeführt?

Ich habe viele Anleitungen zur Verwendung von Homebrew zum Installieren von Python3- und Python-Paketen durchgelesen, aber aus meinen Terminalabfragen geht hervor, dass Python3 bereits installiert ist:

MBP21:~$ which python
/usr/bin/python
MBP21:~$ python --version
Python 2.7.18
MBP21:~$ python3 --version
Python 3.8.9
MBP21:~$ which python3
/usr/bin/python3
MBP21:~$ where python
/usr/bin/python

Aber als ich startete venv, Django installierte (erfolgreich) und tat manage.py runserver, bekam ich diese Meldung:

WARNING: The script sqlformat is installed in '/Users/ysl/Library/Python/3.8/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script django-admin is installed in '/Users/ysl/Library/Python/3.8/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed asgiref-3.4.1 backports.zoneinfo-0.2.1 django-4.0 sqlparse-0.4.2

Und als ich versuchte zu verwenden manage.py runserver, bekam ich diese Fehlermeldung:

    zsh: command not found: manage.py

Ich kann hier verschiedene Probleme zusammenführen, bin mir aber nicht sicher, wo ich anfangen soll, das Problem zu beheben. Schätzen Sie einige Tipps.

Haben Sie das Verzeichnis zu PATH hinzugefügt, wie in den erhaltenen Nachrichten erwähnt?
Wie genau verwenden Sie venv und wie haben Sie die Skripte installiert?
@mmmmmm Ich habe (absichtlich) keine Skripte installiert. Ich habe versucht, an einigen Django-Projekten zu arbeiten, die ich von einem früheren Laptop kopiert habe. Alle Django-Apps verwenden venv ( python3 -m venv ./venv), was ich aus einem Tutorial gelernt habe.
Beginnen Sie mit der Python-Dokumentation für venv docs.python.org/3/library/venv.html Sie haben die Umgebung eingerichtet, verwenden sie aber nicht. Sie müssen es aktivieren
@mmmmmm ich habe venv(n VS Code) aktiviert, da kam die Fehlermeldung:WARNING: The script sqlformat is installed in '/Users/ysl/Library/Python/3.8/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The script django-admin is installed in '/Users/ysl/Library/Python/3.8/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Wie GENAU haben Sie diese Dinge getan, damit wir sie reproduzieren können. Nichts, was Sie gezeigt haben, würde versuchen, etwas in Users/ysl/Library/Python/3.8/bin zu legen - es sei denn, Sie haben es direkt von python3 aus getan, ohne ein venv zu aktivieren
@mmmmmm Ah, vielleicht ist hier etwas schief gelaufen: Ich habe venvam Anfang aktiviert, aber statt pip3 install django-- habe ich pip3 install pythoneine Reihe von Fehlermeldungen erhalten und festgestellt, dass es Django war, das ich installieren wollte. Vielleicht wurde stattdessen Python3 installiert. 1) Kann ich einfach fortfahren und '/Users/ysl/Library/Python/'? 2) Python3 is installed at /usr/bin/python` löschen – das ist die Systeminstallation, richtig? Soll ich fortfahren und Homebrew installieren, um Python3 zu installieren?
Wenn Sie venv USE venv Activating verwenden, werden Ihre Pfade für pip und python3 geändert, sodass where auf das richtige venv zeigt

Antworten (1)

Die Warnung teilt Ihnen mit, dass Binärdateien/Skripte an einem nicht standardmäßigen Speicherort installiert wurden, der nicht in Ihrer PATH. Das bedeutet, dass sie nicht gefunden werden, wenn Sie einfach ihre Namen wie manage.pyohne ihren vollständigen Pfad eingeben.

Sie müssen /Users/ysl/Library/Python/3.8/binzu Ihrem zshPATH hinzufügen (und dann Ihre Shell/Ihr Terminal neu starten).

Der Link führt schließlich zu einem Artikel in dev.to, den ich gelesen habe -- der mich aber auf eine grundlegende Verwirrung meinerseits zurückführt (verzeihen Sie die Unwissenheit): Durch Hinzufügen (Exportieren?) von PATH wird die Installation von Python in /Users/ysl/Library/Python/3.8/binfür andere Django-Apps zugänglich sein? Wenn nicht, muss ich eine Version von Django installieren (möglicherweise mit Homebrew), damit Python mit allen anderen Django-Apps funktioniert? Ich hoffe, das System sauber zu halten und nicht zu viele verschiedene Installationen zu haben, wie ich es beim vorherigen Laptop gemacht habe.
Dies ist insofern richtig, als Sie dem Pfad Dinge hinzufügen müssen, aber wenn Sie venv verwenden, ist das das Falsche.
Ich habe gerade festgestellt (duh!), dass VS Code das Skript nicht auf dem Pfad von '/Users/ysl/Library/Python/3.8/bin'--was ein anderer Pfad ist als /usr/bin/python3der, auf dem sich die ausführbare Python 3.8-Datei befindet, beschwert hat. Welches Konzept/Schlüsselwort kann ich verwenden, um den Unterschied zwischen den beiden herauszufinden?
Das Konzept ist venv - bitte lesen Sie die Handbücher. venv ändert Ihre Umgebung, sodass jede Umgebung einen anderen Pfad und eine andere Version von Python und Bibliotheken hat.
@mmmmmm das verstehe ich. Ich habe mehrmals versucht, die Dokumente zu lesen, aber aufgrund von Lücken in meinem Wissen haben mich die Dokumente noch verwirrter gemacht. Danke - ich werde es noch einmal versuchen.
Führen Sie grundsätzlich activate in Ihrer Shell aus, bevor Sie Python oder Pip ausführen - ich weiß nicht, wie VSCode venvs wechselt, aber PyCharm fragt Sie nach dem Pfad zum venv für das Projekt