virtualenv如何创建不同的python环境?

时间:2016-12-22 01:39:35

标签: python virtualenv

我的服务器有3个virtualenv脚本:

$ 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()

我知道virtualenv2用于创建Python 2环境,而virtualenv3用于Python 3。但令我困惑的是为什么只修改shebang行中的/usr/bin/python2/usr/bin/python3可以达到创造不同环境的效果?它背后的魔力是什么?

1 个答案:

答案 0 :(得分:1)

有两个"魔法"。

1)shebang行通知内核使用正确的解释器。当您调用virtualenv2时,内核会将其扩展为/usr/bin/python2 virtualenv2。同样,当您调用vitualenv3时,内核会将其扩展为/usr/bin/python3 virtualenv3

2)virtualenv.main()基于当前运行的解释器创建虚拟环境。例如,如果virtualenv.main()调用/usr/bin/python3,则会根据/usr/bin/python3创建虚拟环境。

希望你能看到这两个"魔法"项目,一起进行,执行预期的行动。