Bei neuem Projekt immer die Pakete anderer Projekte drin

Django, Flask, Bottle, WSGI, CGI…
Antworten
gomez72
User
Beiträge: 71
Registriert: Sonntag 28. März 2021, 09:57

Hallo,

ich habe ein Problem bei der Erstellung eines neuen Django Projektes. Mir ist grundsätzlich die Funktion einer virtuellen Umgebung klar und würde gerne die Vorzüge, dass ich 2 unterschiedlicher Projekte auf einem Rechner entwickle, diese aber ihre jeweiligen eigenen Python Packages besitzen, gerne nutzen. Nur leider funktioniert es nicht.

Bisher entwickelte ich Projekt A auf meinem Rechner.
Heute startete ich ein neues Projekt, nennen wir es B auf dem gleichen Rechner.
Ich startete mit meiner PYCharm IDE ein neues Django Projekt "B" und das Setup bot mir an eine neue virtualenv zu erstellen. Der Base Interpreter ist auf meinen ursprünglich Python Folder gesetzt.
Den Haken "Inherit global site-packages" habe ich nicht aktiviert. So wie ich das verstehe bedeutet, dass meine neue virtuelle Umgebung keine globalen Pakete erbt.
Schön. Im Terminal von PyCharm wird auch gleich die virtuelle Umgebung aktiviert (venv).

Jetzt den Befehl

Code: Alles auswählen

pip freeze 
eingegeben und schon wird mit nicht eine "nackte Django" Umgebung und deren initialen Packages angezeigt, sondern es werden auch alle Packages aus dem Projekt A angezeigt, obwohl ich wohlgemerkt im Projekt B bin. Das passiert auch wenn ich den Befehl pip freeze --local verwende.

Hmmm, dann habe ich wohl die Pakete im Projekt A nicht innerhalb der virtuellen Umgebung von Projekt A installiert, sondern global??
Also habe ich erst einmal das Projekt B wieder von meinem Rechner gelöscht und auch meine Basis Python Installation deinstalliert.

Danach dann Python frisch installiert. In dem Pojekt A den Ordner venv gelöscht und auch den Ordner .idea um die alte, eventuell falsch aufgesetzte Umgebung nochmal zu löschen und neu zu installieren. Jetzt wo ich ein sauberes Python habe muss das doch funktionieren.
Nachdem ich also dann eine neue virtualvenv innerhalb meines PYCharm Projektes erstellt habe ging ich wieder in das Terminal mit der aktivierten (venv) dann eingegeben:

Code: Alles auswählen

pip freeze -r requirements.txt
um die Pakete für Projekt A also nur in der venv zu installieren.
Schön.

also wieder eine neues Projekt B erstellt und gleich wieder geguckt: pip freeze --locale
und schon wieder sind die Pakete von Projekt A wieder im Projekt B da. :evil:
Entweder mache ich irgendwo noch einen entscheidenden Fehler oder ich kapier das einfach nicht.

Vielleicht kann mir jemand helfen. :(

vg gomez
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

die venvs hast du aber jeweils aktiviert / deaktiviert, oder? `pip list` zeigt dir immer die Pakete der _aktuellen_ Umgebung an.

Wenn es nicht geheim (oder peinlich ;-) ) ist poste doch mal bitte die kompletten Schritte der der Installation sowie pip list für das System und die beiden venvs.

Gruß, noisefloor
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Welche Pakete meinst du denn? Wenn du in PyCharm ein Django-Projekt erstellst, werden bei mir folgende Pakete automatisch installiert:

Code: Alles auswählen

asgiref==3.5.2
Django==4.0.6
sqlparse==0.4.2
tzdata==2022.1
gomez72
User
Beiträge: 71
Registriert: Sonntag 28. März 2021, 09:57

Ich habe das Problem herausgefunden. Es lagt an dem PYCharm Terminal. Die Anzeige, dass er in der jeweiligen richtigen venv ist, war einfach falsch.

Wie habe ich das herausgefunden. Einfach mal den Terminal von meinem OS angeschmissen und dort nachgesehen und siehe da, es waren nur die standard Pakete vorhanden , die eine Django Installation mitbringt.
Wieder zurück in den PyCharm Terminal und dort hatte ich dann wieder die vielen Pakete aus Projekt A. Auch nochmal kontrolliert, dass ich in der richtigen venv bin.

Ich dachte einfach mal ich deaktiviere die venv und aktiviere sie nochmal - UND DAS WAR ES DANN. Ich kann euch nicht sagen, woher das kommt, aber das war die Lösung!
NAch der Aktion hatte ich im PyCharm Terminal dann nur die Initialen Pakete angezeigt bekommen. und das wohlgemerkt in der ganz genau gleichen venv.
Das muss also irgend ein spezielles Phänomen von PyCharm sein.

Danke für Eure Unterstützung.
vg gomez
Antworten