2016-12-22 5 views
0

Mein Server hat 3 virtualenv Skripte:Wie kann virtualenv verschiedene Python-Umgebungen erstellen?

$ ls -lt virtual* 
lrwxrwxrwx 1 root root 4 Nov 22 06:19 virtualbox -> VBox 
-rwxr-xr-x 2 root root 55 Aug 14 19:34 virtualenv 
-rwxr-xr-x 1 root root 55 Aug 14 19:34 virtualenv2 
-rwxr-xr-x 2 root root 55 Aug 14 19:34 virtualenv3 
$ cat virtualenv 
#!/usr/bin/python3 
import virtualenv 
virtualenv.main() 
$ cat virtualenv2 
#!/usr/bin/python2 
import virtualenv 
virtualenv.main() 
$ cat virtualenv3 
#!/usr/bin/python3 
import virtualenv 
virtualenv.main() 

Ich weiß virtualenv2Python 2 Umgebung zu schaffen, verwendet wird, während virtualenv3 für Python 3 ist. Aber was verwirrt mich ist, warum nur die /usr/bin/python2 zu /usr/bin/python3 in Shebang-Linie ändern kann den Effekt erzielen, dass verschiedene Umgebungen erstellen? Was ist die Magie dahinter?

Antwort

1

Es gibt zwei Stücke von "Magie".

1) Die Shebang-Zeile informiert den Kernel über den richtigen Interpreter. Wenn Sie virtualenv2 aufrufen, erweitert der Kernel das auf /usr/bin/python2 virtualenv2. Wenn Sie vitualenv3 aufrufen, erweitert der Kernel das ebenfalls in /usr/bin/python3 virtualenv3.

2) Die virtualenv.main() erstellt eine virtuelle Umgebung basierend auf dem aktuell ausgeführten Interpreter. Wenn z. B. virtualenv.main() von /usr/bin/python3 aufgerufen wird, erstellt es eine virtuelle Umgebung basierend auf /usr/bin/python3.

Hoffentlich können Sie sehen, dass diese beiden "magischen" Gegenstände zusammen die beabsichtigte Aktion ausführen.

Verwandte Themen