rubbish
python安装虚拟环境没有activate_Pythonvenv虚拟环境:
Activat。。。
之前在处理其它需求时,发现只要⽤venv⽬录下的来解释py代码就可以正常运⾏。本来以为完事了,突然想起来,这样的话根本没有运⾏Activate命令,没有进⼊Python虚拟环境啊。于是稍微研究了⼀下这个问题。
菲律宾严重车祸
large[Activate]
看了下Activate源码,其中最重要的动作是把venv虚拟环境的路径临时添加到系统Path路径最前⾯,这样venv的pip命令就能把模块(库)安装到虚拟环境⽬录⾥。Path配置的信息可以在PowerShell⾥,通过 $env:Path 命令查看,能够清楚的看到运⾏Activate之后venv⽬录添加到了Path配置的最前⾯。
欧美怀旧经典歌曲PowerShell中,通过 $env:Path 指令查看Path信息
运⾏Activate之后虚拟⽬录添加到了Path配置的最前⾯
[是否Activate进⼊虚拟环境对pip的影响]
写⼀个py测试⽂件,引⼊os模块(库),然后执⾏ os.system("pip list")
Activate进⼊虚拟环境,执⾏,列出venv中已经添加的模块;⽤系统Python执⾏,列出系统Python中已经添加的模块。
不Activate虚拟环境,直接⽤venv⽬录⾥的执⾏,列出系统Python中添加的模块
也就是说不Activate进⼊虚拟环境,会调⽤系统Python的pip命令
[是否Activate虚拟环境对执⾏py代码有什么区别]
再编写py⽂件,引⼊sys模块(库),打印Python相关的环境变量print(sys.path)a song for mama
系统Python执⾏
⾸先⽤系统Python执⾏:
路径中包括 [当前源码⽬录、系统Python的dll和lib⽬录,以及系统Python的site-packages⽬录]
easytalking
Activate进⼊虚拟环境并执⾏
Activate进⼊虚拟环境并执⾏:
结果包括 [当前源码⽬录、系统Python的dll和lib⽬录,venv⽬录、venv的site-packages⽬录]
直接⽤venv⽬录⾥的执⾏
小学暑假班
不Activate虚拟环境,直接⽤venv⽬录⾥的执⾏:田忌赛马翻译
结果包括 [当前源码⽬录、系统Python的dll和lib⽬录,venv⽬录、venv的site-packages⽬录]
是否运⾏Activate都不影响最终结果
[结论]
⽆论是否Activate,虚拟环境的在运⾏时,环境变量⾃动包含venv的site-packages⽬录。
warlock
所以⽤venv的执⾏py代码,跟是否Activate虚拟环境没有关系。
Activate影响的是pip安装模块(库)的时候。
同时也清楚了venv⾥的Python还是继承系统Python的DLL和Lib,所以直接把venv拷贝给其它机器的话,⾄少需要对⽅机器⾥已经安装了同版本的Python。数学家陈景润
相关视频: