Python虚拟环境两种运行方式的差异:激活后执行VS直接调用可执行文件
两种虚拟环境Python运行方式的区别解析
嘿,这个问题问得很实在!咱们来拆解下这两种运行Python方式的核心差异:
1. 激活虚拟环境后运行python
当你执行source ~/python/venv/venv_python2/bin/activate后,会发生这几个关键变化:
- Shell环境变量被修改:虚拟环境的
bin目录会被添加到系统PATH环境变量的最前面。这意味着不管你在哪个目录下输入python,系统都会优先调用这个虚拟环境里的Python解释器,同理pip命令也会默认指向虚拟环境的pip。 - 提示符直观提示:你的命令行提示符前面会多出
(venv_python2)标识,一眼就能看出来当前正处于这个虚拟环境中,避免误操作其他环境。 - 全局环境隔离更彻底:激活后,所有和Python相关的操作(比如安装依赖、运行脚本)都会默认在这个虚拟环境内进行,完全不会影响系统Python或者其他虚拟环境。
这种方式适合长时间在同一个虚拟环境下工作的场景,比如开发一个完整的项目,全程依赖这个环境的依赖包。
2. 直接调用虚拟环境的Python路径
直接运行~/python/venv/venv_python2/bin/python的话,特点刚好相反:
- 不修改Shell环境:你的系统
PATH变量完全不变,输入普通的python还是会调用系统默认的或者其他已激活的虚拟环境的解释器。 - 无环境提示:命令行提示符不会有任何变化,如果你没记住自己用的是路径调用,很容易混淆当前使用的Python环境。
- 需对应调用配套工具:如果要给这个虚拟环境装包,你得明确调用
~/python/venv/venv_python2/bin/pip,否则pip会默认使用当前Shell环境对应的包管理工具,把包装到错误的地方。
这种方式更适合临时执行单个脚本,或者在脚本的shebang行中指定解释器(比如脚本开头写#!/~/python/venv/venv_python2/bin/python),不需要改变当前Shell的整体环境。
简单总结:激活环境是“切换到这个环境工作”,直接调用路径是“临时用一下这个环境的解释器”。
内容的提问来源于stack exchange,提问作者cikavladimir
相关产品推荐
相关产品推荐

