我的电脑中只安装了一个python,即python 3.7.2,除pip和setuptools外,仅安装了一个virtualenv。
pip list显示如下:
创建虚拟环境后执行activate命令激活虚拟环境,然后安装django,pip list显示如下:
到这里都没有疑问。
然而在退出虚拟环境后再次pip list,却发现列表中仍然存在django包,此时运行where python命令,能够找到两个python.exe,一个是系统的,一个虚拟环境中的:
出现这个问题是因为,当前路径下(虚拟环境)有一个python,所以即便未激活虚拟环境,系统仍然可以找到当前路径下的python.exe,另外当然可以通过环境变量找到系统环境中的python.exe。
此时只要退出这个路径,就会发现只能找到一个python.exe了:
此时再查看pip list,就会回到没有django的状态。
经过此次测试,了解了系统执行python命令的方式(也是DOS命令行执行方式),就是首先在当前路径查找所需命令,然后才进入环境变量路径查找。查找分先后,并且在多处存在同样可执行命令时,执行先找到的命令。
比如在虚拟环境目录下,即使未激活虚拟环境,执行pip install命令安装一个包,也是直接安装在虚拟环境目录下,而不会安装到系统目录下。