2017-11-22 9 views
1

Ich würde Windows Taskplaner verwenden, um ein Python-Skript in einer virtuellen Umgebung auszuführen. Ich würde den Scheduler wie eine BAT-Datei auszuführen, wirdAktivieren Sie virtualenv und führen Sie .py-Skript von .bat

  1. die virtualenv aktivieren
  2. das Skript ausführen

Diese Schritte zusammen aus der Befehlszeile arbeiten, und sie arbeiten einzeln in eine .bat, aber ich kann nicht scheinen, sie zu veranlassen, zusammen von der .bat zusammenzuarbeiten. Es scheint, dass der virtualenv nicht vollständig aktiviert ist, wenn ich versuche, das Python-Skript auszuführen und verwirrt, warum.

Mein .bat sieht wie folgt aus:

call workon venv 
cd path/to/Python/proj 
python -m script.py 

Ich habe versucht, Timeouts sofort nach dem Aufruf workon Hinzufügen und versuchte, die workon bewegen .bat von meiner ersten Datei mit dem Namen zu trennen, aber die anderen Linien noch Ausführen bevor der Virtualenv aktiviert ist. Jede Hilfe wird sehr geschätzt!

+0

diese Antwort könnte ähnlich und hilfreich sein [Ein Python-Skript, das den virtualenv aktiviert und dann ein anderes Python-Skript ausführt?] (Https://Stackoverflow.com/a/30927921/1248974) – davedwards

+1

Ich habe diesen Thread früher gesehen, wusste aber nicht, wie wichtig es ist, die Anweisungen miteinander zu verketten mit dem '&' Operator als @Gerhard unten hingewiesen. Das Einschließen des '&' Operators löste dieses Problem für mich. –

Antwort

0

Sie können & als Bedingungsoperator in einer Oneliner-Stapeldatei verwenden.

call workon venv & cd path/to/Python/proj & python -m script.py 

Im Grunde, was es tut, ist es jeden Befehl nach dem anderen laufen, aber der nächste Befehl wird nur dann ausgeführt, wenn der vorherige Befehl erfolgreich oder mit anderen Worten abgeschlossen ERRORLEVEL = 0

Verwandte Themen