2010-04-30 6 views
11

yolk -l gibt mir Informationen, dass ich 114 Pakete auf meinem Ubuntu 10.04 installiert habe. Nach dem Erstellen neuer virtualenv Verzeichnisvirtualenv Eigelb Problem

virtualenv virt_env/virt1 --no-site-packages --clear

ich, dass die Verwendung schaltet, meine prompt geändert und dann yolk -l gibt mir wieder die gleichen 114 Pakete.

Was ist dort los?

+0

Installieren von Eigelb in der virtuellen Umgebung half ... ziemlich seltsam. –

Antwort

18

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.

+1

Dies kann automatisch jedes Mal gemacht werden, wenn Sie ein Boot mit einem Bootstrap-Skript erstellen: http://www.virtualenv.org/en/latest/#creating-your-own-bootstrap-scripts – Hollister

+0

Wenn Sie virtualenvwrapper (das verwenden Ich empfehle sehr), fügen Sie 'pip install yolk' zu Ihrer postmkvirtualenv Datei hinzu. http://www.doughellmann.com/docs/virtualenvwrapper/scripts.html#scripts-postmkvirtualenv – Hollister

0

Wenn das Problem sich nicht auf Ihren Pfad bezieht (ich nehme an, es ist), löschen Sie Ihren lib- und scripts-Ordner in Ihrem Projektverzeichnis, um die virtualenv-Einstellungen zu löschen. Erstellen Sie das virtuelle env mithilfe der von Ihnen geposteten Befehlszeile neu. Aktiviere den Virtualenv und installiere dann Dotter.

+1

Als Alternative versuchen Sie 'which dolk' - wenn es in (yourvirtualenv)/bin ist, dann versuchen Sie, Ihr Terminal zu schließen und es wieder zu öffnen, aktiviere deinen virtualenv und versuche noch einmal 'dotter -l'. Behoben für mich – maxm