环境管理
conda
镜像源
Windows要首先运行conda config --set show_channel_urls yes生成.condarc文件。
修改.condarc文件:
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/随后运行conda clean -i 清空索引缓存,确保使用的是镜像站的索引。
查看conda安装路径
conda info --base环境变量配置
Windows下需要手动配置环境变量,vscode才能自动搜索到conda环境,eg:
# 首先需要在环境变量中添加
# windows的环境变量可以在win键按了之后打环境变量调出来
Path=D:\Programs\Miniconda3\Scripts:D:\Programs\Miniconda3\Library\bin:D:\Programs\Miniconda3
# 随后在powershell或者cmd中执行
conda init powershell
conda init cmd.exe
# 如果遇到“因为在此系统上禁止运行脚本”
get-executionpolicy # 查看当前策略
set-executionpolicy remotesigned一般创建和删除环境的方式
conda create -n py310 python=3.10
conda remove -n py310 --all创建包含cudatoolkit环境的conda环境
conda create -c nvidia --name my_gpu_env python=3.8 cudatoolkit=11.6通过yaml文件创建环境
conda env create -f environment.yml使用某个环境跑脚本
conda run -n ${CONDA_ENV_NAME} python ./manager_spawn.py卸载
# 先去$PROFILE目录下注释掉conda相关的环境变量。
# 然后卸载就行了。pip
–dry-run
--dry-run 选项允许在不实际执行操作的情况下模拟 pip install 或 pip uninstall 命令。这对于预览将要进行的更改(例如版本升级、依赖变更或卸载的包)非常有用。
常用场景
- 检查依赖冲突:在不破坏当前环境的情况下,查看安装新包是否会导致冲突。
- 预览升级版本:查看
pip install --upgrade会将哪些包升级到什么版本。 - 确认卸载列表:在执行
pip uninstall时,确认哪些包将被移除。 - 生成报告:配合
--report选项生成 JSON 格式的安装报告(pip 22.2+)。
示例
# 模拟安装
pip install package_name --dry-run
# 模拟升级所有包 (Linux/Mac)
pip list --outdated --format=freeze | cut -d = -f 1 | xargs -n1 pip install -U --dry-run
# 模拟卸载
pip uninstall package_name --dry-run
# 检查 requirements.txt 安装情况
pip install -r requirements.txt --dry-runuv
uv是一个非常高效的python包管理和项目管理器,使用Rust编写,另外uv使用的是系统安装的python,而不是自己创建的。
安装
curl -LsSf https://astral.sh/uv/install.sh | sh常用指令
# 安装python
uv python list
uv python install 3.8
# 初始化项目
uv init <project_name>
# 初始化虚拟环境
uv venv
# venv指定版本
uv venv --python 3.8
# 添加包
uv add <package_name>
# 从requirement.txt安装
uv pip install -r requirements.txt
# 进入虚拟环境
source .venv/bin/activate
# 安装包到当前虚拟环境
uv sync
# 安装包到系统环境
uv pip install --system -r pyproject.tomlDockerfile案例
FROM nvidia/cuda:12.8.1-devel-ubuntu22.04 AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update -y
RUN apt install -y --no-install-recommends curl software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa && apt-get update && \
apt install -y --no-install-recommends python3.12 python3.12-dev python3.12-venv && \
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12 && \
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \
update-alternatives --install /usr/bin/pip3 pip3 /usr/local/bin/pip 1 && \
rm -rf /var/lib/apt/lists/*
# install uv
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
WORKDIR /workspace
COPY ./.python-version /workspace/
COPY ./pyproject.toml /workspace/
COPY ./uv.lock /workspace/
# 增加uv的缓存,避免重新编译cupy和下载torch相关的东西
RUN --mount=type=cache,target=/root/.cache/uv . /root/.local/bin/env && uv sync
FROM nvidia/cuda:12.8.1-runtime-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update -y
RUN apt install -y --no-install-recommends curl software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa && apt-get update && \
apt install -y --no-install-recommends python3.12 python3.12-dev python3.12-venv && \
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12 && \
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \
update-alternatives --install /usr/bin/pip3 pip3 /usr/local/bin/pip 1 && \
rm -rf /var/lib/apt/lists/*
# install uv
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
WORKDIR /workspace
COPY ./.python-version /workspace/
COPY ./pyproject.toml /workspace/
COPY ./uv.lock /workspace/
COPY --from=builder /workspace/.venv /workspace/.venv
COPY ./service.py /workspace/
COPY ./utils /workspace/utils
RUN apt update -y && apt install -y libgl1 mesa-utils && rm -rf /var/lib/apt/lists/*
COPY ./ffmpeg/bin/ /usr/bin/
COPY ./ffmpeg/libs/ /usr/lib/
COPY ./models/InspireFace/Pikachu /root/.inspireface/ms/tunmxy/InspireFace/Pikachu
COPY ./frontend.py /workspace/
CMD ["/bin/bash", "-c", ". /root/.local/bin/env && uv run service.py --config ./config.json"]