大模型学习日志(3)---uv虚拟环境

2 阅读2分钟

个人开发干的蠢事记录...

今天碰到了一个对我来说比较特殊的问题。

一直以来,虚拟环境venv是很常用的。

但是过去就如同《学习日志(1)》一样,一直用的创建虚拟环境命令都是:

# 创建虚拟环境
python -m venv .venv

# 启动虚拟环境
.venv\Scripts\activate

但是今天我学习使用了uv包管理,uv比pip速度更快,更加适合fastapi+langchain项目的开发,这里就不提uv的其他好处了,下面列出uv相关命令:

# uv 初始化(在对应文件路径下)
uv init

# 创建虚拟环境
uv venv

# 启动虚拟环境
.venv\Scripts\activate

其实大体命令上区别是不大的,但是,在命令行提示符这里有区别。

(.venv) C:\Users\Desktop\dwd>

(dwd) C:\Users\Desktop\dwd>

实际上这两种分别对应两个不同的创建虚拟环境的方法,上面一行的命令提示符内为(.venv)

下面一行的命令提示符内为(dwd),为你的文件夹名

一开始让我头晕的是,(dwd)中输入pip list,按理来说应该为空,因为uv默认不继承全局的包,但是输出的结果确是一大堆。我必须采用python -m pip list才能看到为空,很不能理解,后面跟豆包、deepseek拉扯好久,然后找了chatgpt,终于把问题解决了。

实际上当我在(dwd)虚拟环境命令行输入pip list时,由于此时.venv中还没有pip这个包,导致他去匹配了系统环境变量里的PATH,哪怕虚拟环境优先于全局,他还是会用的全局的pip。

第二个问题算是小毛病,就是我的Shell每次打开自带(base),这个是conda的锅,重点是当我启动uv虚拟环境的时候,他命令行居然给我显示(base)(dwd) C:\Users\Desktop\dwd>,有的时候又是(dwd)(base) C:\Users\Desktop\dwd>,直接给我干红温了...

做一个总结,其实还是我搞复杂了,正常其实不用管这管那,直接开发功能就可以了,闲的没事把这个搞清楚了,也不知道有啥用哈哈哈哈