1 虚拟环境实现逻辑
先聊清楚虚拟环境,得从全局Python说起。
1.1 Python全局环境
全局环境就是你安装Python后得到的那个文件夹,叫Python312或Python39之类的。里面结构大概这样:
Python312/
├── Lib/
│ ├── site-packages/ # 第三方包就放这里,pip安装后import的就是这
│ └── python 标准库(直接可import的)
├── Scripts/
│ └── pip.exe(自带包管理器)
├── python.exe(解释器,核心)
└── [其他必要文件夹]
![图片:Python 目录结构示例]
1.1.1 查看全局环境
如果你不确定自己电脑装了几个Python,可以直接在CMD里敲:
where python
它会列出PATH里所有python.exe路径。我的机器上输出类似这样:
C:\Anaconda3\python.exe
C:\Scoop\apps\python\current\python.exe
C:\Users\75224\AppData\Local\Programs\Python\Python312\python.exe
C:\Users\75224\AppData\Local\Microsoft\WindowsApps\python.exe
这些就是曾经加入到系统或用户环境变量Path中的路径。
![图片:环境变量 Path 设置]
1.1.2 解释器来历
- C:\Anaconda3\python.exe —— 装了Anaconda。
- C:\Scoop\apps\python\current\python.exe —— 以前用Scoop(一个Windows包管理器)装的Python,现在基本不用了。
- Python312\python.exe —— 从Python官网下载的标准版,版本3.12。我用它作为PyCharm的基础解释器,创建虚拟环境也推荐用它配合venv。
- WindowsApps\python.exe —— 这不是真Python,是微软商店的占位符,没装Python时会引导你去安装。建议直接忽略或关掉。
1.1.3 解释器优先级
现在默认使用的Python是上面列表的第一个,也就是Anaconda的解释器。谁排在前面是由环境变量Path里这些路径的顺序决定的。而且Windows先搜索系统Path,再搜用户Path,所以系统Path里的解释器会被优先调用。
![图片:系统 Path 与用户 Path 优先级对比]
1.2 虚拟环境词汇澄清
提到Python虚拟环境,各种名词满天飞:Anaconda、conda、Virtualenv、venv、pip、Poetry、Miniconda、base环境…… 这里串一下它们的关系。
1.2.1 pip
pip到底是什么?
pip是Python官方的包管理器,从PyPI下载包,安装到当前Python环境的site-packages目录。它随Python一起提供(3.4之后就内置了),就在Scripts文件夹下,叫pip.exe。用法就是在终端执行pip install 包名,不能在.py文件里直接写pip命令——解释器看不懂,pip和解释器是平级的。
当然,PyCharm里可以图形化安装包:
![图片:PyCharm 包管理界面]
pip和虚拟环境的关系
虚拟环境是为了给不同项目隔离不同的包版本。pip负责具体安装什么包。一句话:虚拟环境决定'装到哪',pip负责'装什么'。conda也有类似功能,后面会讲。
怎么查看已经安装了哪些包?
一个pip绑定一个解释器,包会装到对应解释器的site-packages下。你可以直接打开Python安装目录\Lib\site-packages\看,或者在PyCharm里查看。基础环境尽量保持干净,只装必要的包。
![图片:site-packages 目录]


