PyCharm中venv与External Libraries的区别及相关疑问
理清PyCharm中Venv与External Libraries的区别
嘿,作为编程新手遇到这种界面上的“重复”确实容易懵,我来给你拆解清楚这俩到底是什么,以及你看到的现象背后的逻辑:
1. 虚拟环境(venv):项目专属的隔离小天地
venv是你为当前项目创建的独立虚拟环境,它是实实在在的文件夹(就在你的项目目录下),完全和系统全局的Python环境隔离开:
- 你在这个项目里用
pip install django装的包,只会出现在venv的site-packages里,所以你看到django只在这里 - 虚拟环境创建时,会自动复制一份Python解释器和基础工具(比如pip)到自己的文件夹里,所以你会看到venv里有pip——这是属于这个虚拟环境的pip,和全局环境的pip是两个不同的文件
- 它的核心作用就是避免不同项目的依赖版本冲突,比如A项目用Django 2.x,B项目用Django 4.x,各自的虚拟环境完全不干扰
2. External Libraries:所有可用外部依赖的统一视图
External Libraries并不是一个实际的文件夹,而是PyCharm给你做的汇总展示面板,它会把当前项目能访问到的所有外部依赖都列在这里,包括:
- 系统全局的Python环境里的包:比如urllib是Python标准库的一部分,属于你电脑上全局安装的Python 3.6,所以只会出现在这里(除非你在venv里也装了,但标准库一般不用单独装)
- 当前激活的虚拟环境(也就是你的venv)里的包:所以你在venv里装的django,也会在这里显示出来
- 其他你配置给项目的解释器环境(比如conda环境、其他虚拟环境)里的包
关于你看到的“重复”和“相同文件夹”
你觉得两个地方的site-packages看起来一样,其实是因为PyCharm把venv的site-packages也纳入了External Libraries的展示范围——相当于把虚拟环境的依赖和全局依赖放在同一个面板里给你看,方便你快速浏览所有可用的库。
至于同一文件会不会同时出现在两个位置?答案是不会:
- venv的文件都在项目目录下的
venv子文件夹里,和全局Python的路径完全分开 - 像pip这种两边都有的,是因为虚拟环境创建时复制了一份,是两个不同的文件,只是功能相同、名字一样
- 你看到的“重复展示”,只是PyCharm把不同环境里的包都列在了External Libraries里,并不是同一个文件出现在两个地方
总结一下:venv是专属你的项目的独立环境文件夹,External Libraries是PyCharm帮你汇总所有可用依赖的视图面板,两者的关系是:venv里的依赖会被包含在External Libraries的展示中,但它们本质是不同的东西~
内容的提问来源于stack exchange,提问作者esafresa
相关产品推荐
相关产品推荐

