常用指令
- 创建 / 更名 / 删除 环境
conda create -n <env-name> [package1] [package2] ... # 创建
conda rename -n <env-name> <new-env-name> # 更名
conda remove -n <env-name> --all # 删除
- 查看环境更改历史 / 滚回版本
conda list -n <env-name> --revisions
conda install -n <env-name> --revision NUMBER # 滚回
- 激活 / 安装包/ 更新包 / 卸载包 / deactivate
conda activate <env-name>
conda install <package1> <package2> ... # 激活后环境内指令
conda update <package1> <package2> ... # 激活后环境内指令
conda update --all # 更新所有 # 激活后环境内指令
conda uninstall <package1> <package2> ... # 激活后环境内指令
conda deactivate # 激活后环境内指令
- 查看所有环境
conda env list #或 conda info -envs
- 查看环境内所有package (在所查看环境激活状态中)
conda list
- 克隆/导入环境
# 克隆
conda create --clone <env-name> -n <new-env-name>
# 导入
# conda 环境
conda env create -n <env-name> --file environment.yml # from .yml
conda create -n <env-name> --file environment.txt # from .txt
# pip安装环境
pip install -r requirements.txt
- 导出环境(先activate)
# conda 环境
conda env export > environment.yml
conda env export --from-history>environment.yml # 跨平台兼容
# --from-histroy 会只将你直接输入让install过的package打包(因为附带的包可能跨平台不兼容)
conda list --explicit>environment.txt # platform + package + channel specific
# pip安装环境
pip freeze > requirements.txt
版本冲突
1. conda与pip之间的冲突
如h5py常遇到conda装过,pip也装过。查看是否同时都装了,只保留一个。
2. conda内部多版本冲突
- 包与包之间版本冲突
一般conda或pip会resolve自己内部的版本冲突,但仍有可能出现不兼容问题。
a. conda如报错不兼容,可尝试切换channel(如conda-forge)来选择更兼容的包;
b. 另一种能够成功安装,但无法正常使用,如pytorch和cuda之间的版本兼容需要在官网上查询。如果没有官方查询渠道,搜索报错日志或无法正常使用的包查看是否为已知问题。 - 多版本冲突
如opencv-python, opencv-contrib-python, opencv-python-headless不能同时安装,只能安装一个。
写在最后
血泪教训是能pip install就pip,更大程度上避免手动兼容;conda的channel令人痛苦。