Python venv

0 阅读3分钟

venv

这里说的环境管理,管理的是Python 解释器版本(比如 3.9 和 3.10 的切换)和 Python 第三方库(如 numpytorchopenbox)。

venvpip install 的包,只存在于这个文件夹里,不会影响系统 Python 或其他环境。

1. 环境管理(创建/删除/查看)

操作目标命令说明
创建环境python -m venv 环境名称例如:python -m venv mosmac-venv,会在当前目录生成同名文件夹
删除环境rm -rf 环境名称直接物理删除文件夹,没有类似 conda remove 的专门指令
查看环境列表没有内置命令只能靠 lsdir 查看当前目录下有哪些 venv 文件夹(因为 venv 不注册到系统,位置就在项目里

2. 激活与退出

操作Linux / macOS (你的容器)Windows
激活 (Enter)source 环境名称/bin/activate环境名称\Scripts\activate
退出 (Exit)deactivatedeactivate
激活后标志终端提示符前出现 (环境名称)终端提示符前出现 (环境名称)

验证是否激活成功:激活后执行 which python,路径应指向 环境名称/bin/python,而不是 /usr/bin/python


3. 包管理

因为 venv 没有自带的 conda install所有包操作都通过 pip 完成

操作命令(需在激活状态下执行)对应 Conda 命令
安装包pip install 包名conda install 包名
指定镜像安装pip install -i 镜像源 包名(Conda 换源需修改配置文件)
批量安装pip install -r requirements.txtconda install --file requirements.txt
导出环境pip freeze > requirements.txtconda env export > environment.yml
查看已安装包pip listconda list
查看某个包信息pip show 包名conda info 包名
卸载包pip uninstall 包名conda remove 包名

4. 关于 Python 版本的选择

  • venv 创建环境时,默认使用你执行命令时的 python 版本。

  • 如果你想指定某个特定 Python 版本,必须在创建前指定,例如:

    python3.8 -m venv myenv   # 创建一个 Python 3.8 的环境
    python3.9 -m venv myenv   # 创建一个 Python 3.9 的环境
    

    注意venv 不支持在创建后随意切换 Python 版本(不像 Conda 可以在 yml 里指定),所以创建前确认好版本。


5. 关于“位置”(关键习惯差异)

这是一个很容易混淆的点:

  • Conda:环境统一放在 ~/anaconda3/envs/ 里,全局共用。
  • venv:环境就放在你的项目文件夹里(例如 /home/ario/paper_experiment/mosmac-venv)。

带来的习惯改变

  • 如果要把代码拷给别人,不需要拷这个 mosmac-venv 文件夹(太大、且路径可能不对),只需要把 requirements.txt 发过去,让对方在自己机器上重新 python -m venv xxx + pip install -r requirements.txt 即可。

    在对应环境中执行如下命令生成requirements.txt文件

    pip freeze > requirements.txt
    

常用流程

  1. 初建环境

    cd /home/ario/paper_experiment
    python -m venv mosmac-venv
    
  2. 日常跑实验时(每次新开终端)

    source /home/ario/paper_experiment/mosmac-venv/bin/activate
    cd /workspace/llamatune
    python run-smac.py   # 你的实验脚本
    
  3. 搞砸了想重来

    deactivate                # 先退出
    rm -rf mosmac-venv        # 删掉旧的
    python -m venv mosmac-venv # 重新创建