Aktivierung eines virtualenv funktioniert, indem Sie Ihren Shell PATH so ändern, dass das Verzeichnis/bin des Virtualenvs zuerst kommt. Dies ist alle es tut. Das heißt, wenn Sie "python" ausführen, wird anstelle des globalen System-Python die Kopie des Python-Binärprogramms von virtualenv ausgeführt.
Wenn du Dotter global installiert hast, ist das einzige "Dotter" -Binär auf deinem PATH/usr/local/bin/dotter oder etwas ähnliches; Das Aktivieren des Virtualenv ändert dies nicht (weil es kein "Dotter" -Skript in Ihrem virtualenv bin/dir gibt). Und das Script/usr/local/bin/dolk hat natürlich Ihren System-Python-Interpreter in seiner Shebang-Zeile.
Aus diesem Grund behebt die Installation von Eigelb in den virtualenv das Problem; weil es ein Yolk-Skript in Ihrem virtualenv bin/dir hinzufügt, das den Python des virtualenv in seiner Shebang-Zeile hat.
Wenn Sie nicht möchten, Eigelb in jedem virtualenv zu installieren, können Sie auch einfach den Yolk-Skript-Wrapper aus/usr/local/bin oder wo immer es ist in das Bin-Verzeichnis Ihres Virtuellenv kopieren und die Shebang-Zeile manuell ändern um auf den Python deines Virtualenvs zu zeigen. Dies funktioniert jedoch nicht mit einem --no-site-packages virtualenv, da der Script Wrapper dann nicht die richtigen Dotterpakete finden kann, die importiert werden müssen! Wenn Sie Dotter in einem --no-site-packages virtualenv verwenden möchten, ist es wirklich Ihre einzige Wahl, es dort zu installieren.
Installieren von Eigelb in der virtuellen Umgebung half ... ziemlich seltsam. –