用 uv 管理 Python 环境
这里介绍的是用 uv 创建一个完全独立的 Python 环境,通常意味着你需要一个与运行时自带的 Python 不同版本的环境,或者想为某个项目完全隔离依赖。如果只是想安装几个额外的包,不需要创建独立环境——pip install --user <package> 即可,安装的包会保存在工作空间中,重启后依然可用,可以参考文档 保留 pip 依赖。
较新的 Ubuntu 24.04 运行时(如 vllm 0.20 及之后、pytorch 2.11 及之后)使用 uv 管理 Python,不再内置 Conda。运行时自带的默认 Python 环境位于 /opt/venv。
直接用 uv pip install <包名> 会把包装进自带的 /opt/venv,可以立即使用,但该目录不在持久化目录下,容器重启后会丢失。需要重启后保留时:只装少量包用 pip install --user(uv 不支持 --user,这一步用系统自带的 pip);需要独立环境则按下文在 /openbayes/home 下创建。
判断当前运行时使用的是 uv 还是 Conda:
$ uv --version # 能输出版本号即为 uv 运行时,使用本文
$ conda --version # 能输出版本号即为 Conda 运行时,参考「用 Conda 进行依赖管理」
使用 uv 创建新的环境
1. 在 /openbayes/home 下创建一个新的环境
cd /openbayes/home
uv venv myenv
通常几秒钟即可完成。然后激活新的环境:
source /openbayes/home/myenv/bin/activate
能够保存环境的关键在于将环境创建在 /openbayes/home 下。容器重启后,重新执行上面的 source 命令即可继续使用这个环境。
2. 在环境中安装依赖
激活环境后使用 uv pip install 安装依赖:
uv pip install torch torchvision
uv pip install -r requirements.txt
在自建的独立环境中安装依赖时不要添加 --user 参数;添加 --user 后依赖会被安装到 /openbayes/home/.pylibs 下而不是新创建的环境中,容易引发依赖冲突。
3. 需要不同的 Python 版本
uv 可以下载任意版本的 Python,但请务必先把下载位置指定到工作空间内,否则容器重启后解释器会丢失、整个环境失效:
export UV_PYTHON_INSTALL_DIR=/openbayes/home/.uv/python
uv venv myenv --python 3.11
export 设置的环境变量只对当前终端会话有效。之后(包括容器重启后)再创建其他 Python 版本的环境时,请先重新执行上面的 export 命令——遗漏的话,新创建的环境会在下一次重启后失效。
已经创建好的环境不受影响:解释器已保存在工作空间内,重启后直接 source 激活即可继续使用。
使用运行时自带的 Python 版本创建环境时(不指定 --python 或与自带版本一致),无需设置该变量。
将新创建的环境与 Jupyter 工作空间集成
与 Conda 环境类似,在环境中安装 ipykernel 并注册为 Jupyter kernel,即可在同一个 Jupyter 工作空间中切换使用不同的环境:
source /openbayes/home/myenv/bin/activate
uv pip install ipykernel
python -m ipykernel install --user --name=myenv --display-name="Python (myenv)"
重新打开 Jupyter 工作空间页面后即可在 kernel 列表中看到新增的选项。
kernel 的注册信息保存在系统目录中,容器重启后会丢失。重启后重新执行上面最后一条 python -m ipykernel install 命令即可恢复(环境本身保存在工作空间中,不会丢失)。