[英]How can virtualenv create different python environments?
我的服务器有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)shebang行通知内核要使用的正确解释器。 当您调用virtualenv2
,内核会将其扩展为/usr/bin/python2 virtualenv2
。 同样,当您调用vitualenv3
,内核会将其扩展为/usr/bin/python3 virtualenv3
。
2) virtualenv.main()
基于当前运行的解释器创建虚拟环境。 例如,如果virtualenv.main()
由/usr/bin/python3
调用,则它将基于/usr/bin/python3
创建一个虚拟环境。
希望您可以看到这两个“魔术”项目一起执行了预期的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.