Wie kann ich Probleme mit VENVs `--system-site-packages` beheben, die mein System nicht spiegeln?

359
xtian

Ich arbeite mit Arch Linux und möchte virtuelle Umgebungen verwenden, um nur die wenigen PIP-Pakete zu installieren, die ich für bestimmte Projekte verwende, während die Arch-Pakete weiterhin für Python verwendet werden. Wenn ich jedoch ein neues VENV-Objekt erstelle, das dieses --system-site-packagesArgument verwendet (um auf die Python-Pakete der Arch-Basis zuzugreifen), ist das neue VENV kein vollständiger Spiegel der Umgebung, die nicht VENV-fähig ist.

Wie habe ich das getestet:

  1. pip freezemeiner aktuellen Installation von Python aus Arch-Paketen .

  2. Erstellt eine virtuelle Umgebung, venv $mkvirtualenv --system-site-packages venv

  3. Erstellt eine Sekunde pip freezeaus dem aktiven Bereich heraus

  4. Vergleichen Sie mit diff

Ich habe erwartet, dass der Unterschied derselbe ist, aber es gibt zahlreiche Unterschiede.

Ich glaube, dass alle Python- und verwandten Pakete mit installiert wurdenpacman . Ich bin überzeugt, dass alle wichtigen Pakete (iPython, Numpy, Pandas, Jupyter, Matplotlib usw.) mit dem Paketmanager von Arch installiert wurden pacman. Da ich mein System nicht erst gestern installiert habe, ist es mit der Zeit sicherlich möglich, dass ich PIP für ein paar Pakete verwendet habe. Die Regel, die ich befolgt habe, besteht darin, die pacmaninstallierten Pakete zu verwenden, um die Korrektur der Arch-Community zu nutzen Inkompatibilitäten (im Gegensatz zu einer Kombination von Github-, PiP- und Arch-Paketen).

Wie kann ich das Problem verschiedener Pakete in meinem VENV mit dem --system-site-packagesArgument beheben ?


HINWEIS. Diese Frage könnte in die falsche Richtung gehen, wenn ich falsch verstehe, wie das --system-site-packagesArgument funktioniert. In diesem Fall sollte die Frage lauten: Warum erstellt --system-site-packagesArgument keinen doppelten Spiegel der Python-Pakete meines Systems?

1
Hast du das jemals herausgefunden? Diese ganze System-gegen-Benutzer-Python-Sache (und ehrlich gesagt, Ruby und Knoten-Sache) hat mich immer zu einem Ende durcheinander gebracht ... rbellamy vor 6 Jahren 0
Ich habe im Diskussionsforum von Google für [Virtual Envwrapper] (https://goo.gl/1unRdp) und [Archlinux] (https://goo.gl/JvNE6L) gepostet. Nicht viel Interesse an der ersten und für mich war der Kern der zweiten Antwort die Verwendung von "pip" und nicht des Paketmanagers der Distribution. Meines Erachtens empfiehlt es sich, die erforderlichen Pakete für jedes Projekt erneut zu installieren (Argument "Speicher ist billig"). Es besteht kein Interesse an diesem Problem. Es tut uns leid. Ich durcheinander nur durcheinander. xtian vor 6 Jahren 0

0 Antworten auf die Frage