Conda虚拟环境管理,示例:安装GPU版PyTorch、解决PowerShell启动时无法激活虚拟环境的问题、导出导入环境、安装GCC编译器
【代码】Conda虚拟环境管理,示例:安装GPU版PyTorch、解决PowerShell启动时无法激活虚拟环境的问题、导出导入环境、安装GCC编译器。
·
建议使用Miniconda,原因:
- 只含有Conda和Python,没有Spyder、Jupyter等组件,非常轻量。如果想用Jupyter,可以直接用VSCode安装Python扩展,然后新建ipynb文件
- base环境只有少量的预装库,更加轻量。每做一个新项目就要开一个新环境,不要在base下面做开发
- 不用担心每次新建环境,网速跟不上的问题,可以用clone指令,从现有环境中create一个一模一样的环境
- Miniconda 官方下载地址
常用指令及安装GPU版PyTorch
- 换源,著名的清华源conda分源在此Anaconda 镜像,Anaconda和Miniconda的源是共用的。但是清华源用的人很多,会变得很慢,大家可以去搜索一些冷门的源,比如说:北京外国语大学的源
- pip 的源也要进行更换,pip 换源后,对于每一个新建的 conda 环境都有效,清华源 pip 分源在此PyPI 镜像
- 新建一个环境,命名为pytorch112_py38,112是PyTorch版本号v1.12.1的意思,建议使用这种版本号末尾有.1的版本,像是v1.13.0这种版本,会有新版本的bug
- Python版本要求大于等于3.8,为了兼容大多数使用PyTorch v1.x版本的仓库,我就采用3.8
conda create --name pytorch112_py38 python=3.8
- 激活pytorch112_py38环境,安装v1.12.1版本PyTorch,一定要先换源再安装
conda activate pytorch112_py38
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
- 对于 PyTorch 2.x,建议 Python 大于 3.10
- 经实测,PyTorch 2.x 能更好的启动多 num_workers 的 DataLoader,因此建议使用 PyTorch 2.x
- PyTorch 2.x 需要 nvidia 的 conda 源,可以用南方科技大学的
conda config --set custom_channels.nvidia https://mirrors.sustech.edu.cn/anaconda-extra/cloud
conda create --name pytorch22_py310 python=3.10
conda activate pytorch22_py310
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=11.8 -c pytorch -c nvidia
conda create --name pytorch24_py312 python=3.12
conda activate pytorch24_py312
conda install pytorch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 pytorch-cuda=12.4 -c pytorch -c nvidia
- 若遇到如下问题:
>>> import torch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/miniforge3/envs/pytorch24_py312/lib/python3.12/site-packages/torch/__init__.py", line 290, in <module>
from torch._C import * # noqa: F403
^^^^^^^^^^^^^^^^^^^^^^
ImportError: /root/miniforge3/envs/pytorch24_py312/lib/python3.12/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
- 可以换 pip 来安装,不过默认是从 pytorch 官网拉取 wheel,比较慢,并且之前安装的环境要完全删除,删除环境的命令之后会讲
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124
- 到这儿你可能要问了,我不想把环境命名为pytorch112_py38该怎么办呀?放心,pytorch112_py38是用来clone建立新的环境用的,不是直接拿来用的。现在用pytorch112_py38来clone新环境,命名为env
conda deactivate
conda create --name env --clone pytorch112_py38
- 现在可以查看已有的环境,然后激活clone出来的新环境
conda env list
conda activate env
- 要单独删除环境里的某个包很简单,比如说从env删除sqlite:
conda remove --name env sqlite
- 要完全删除新建的环境,需要先退出要被删除的环境,然后删除:
conda deactivate
conda remove --name env --all
解决PowerShell启动时无法激活虚拟环境的问题
- Conda安装在Windows后,默认不在任何命令行激活虚拟环境,需要init
PS C:\Users\lenovo> conda init --help
usage: conda-script.py init [-h] [--all] [--reverse] [--anaconda-prompt]
[--json] [-v] [-q] [-d] [shells ...]
Initialize conda for shell interaction. [Experimental]
Options:
positional arguments:
shells One or more shells to be initialized. If not given,
the default value is 'bash' on unix and 'cmd.exe' on Windows.
Use the '--all' flag to initialize all shells.
Currently compatible shells are {bash, cmd.exe, fish, powershell, tcsh, xonsh, zsh}
- 如果直接conda init,则是init了cmd,而不是powershell
PS C:\Users\lenovo> conda init powershell
no change C:\Users\lenovo\miniconda3\Scripts\conda.exe
no change C:\Users\lenovo\miniconda3\Scripts\conda-env.exe
no change C:\Users\lenovo\miniconda3\Scripts\conda-script.py
no change C:\Users\lenovo\miniconda3\Scripts\conda-env-script.py
......
- 此时需要关闭当前终端,然后再打开,才能使改变生效。但是PowerShell默认是禁止运行脚本的,因此再次启动PowerShell会报错
. : 无法加载文件 C:\Users\lenovo\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\lenovo\Documents\WindowsPowerShell\profile.ps1'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
// 通过Get-ExecutionPolicy可发现是受限的
PS C:\Users\lenovo> Get-ExecutionPolicy
Restricted
- 需要“以管理员身份运行”PowerShell,然后执行Set-ExecutionPolicy RemoteSigned,输入Y
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如
https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y
- 关闭当前终端,然后再打开,发现能自动激活虚拟环境了
(base) PS C:\Users\lenovo> conda list
# packages in environment at C:\Users\lenovo\miniconda3:
#
# Name Version Build Channel
......
查看Conda信息
conda info
active environment : kan-tts
active env location : /home/huangzhuofei/miniconda3/envs/kan-tts
shell level : 2
user config file : /home/huangzhuofei/.condarc
populated config files : /home/huangzhuofei/.condarc
conda version : 23.9.0
conda-build version : not installed
python version : 3.11.5.final.0
virtual packages : __archspec=1=x86_64
__cuda=12.0=0
__glibc=2.27=0
__linux=5.4.0=0
__unix=0=0
base environment : /home/huangzhuofei/miniconda3 (writable)
conda av data dir : /home/huangzhuofei/miniconda3/etc/conda
conda av metadata url : None
channel URLs : https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/linux-64
https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/noarch
https://mirrors.bfsu.edu.cn/anaconda/pkgs/r/linux-64
https://mirrors.bfsu.edu.cn/anaconda/pkgs/r/noarch
https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2/linux-64
https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2/noarch
package cache : /home/huangzhuofei/miniconda3/pkgs
/home/huangzhuofei/.conda/pkgs
envs directories : /home/huangzhuofei/miniconda3/envs
/home/huangzhuofei/.conda/envs
platform : linux-64
user-agent : conda/23.9.0 requests/2.31.0 CPython/3.11.5 Linux/5.4.0-150-generic ubuntu/18.04.6 glibc/2.27
UID:GID : 1006:1006
netrc file : None
offline mode : False
导出导入环境
- 先激活环境,然后导出当前环境到
environment.yaml
conda activate kan-tts
(kan-tts) conda env export --file environment.yaml --no-builds
- 直接从
environment.yaml
创建环境,创建的环境名和environment.yaml
里的name字段一致,可以用--name
指定新的环境名
conda env create --file environment.yaml --name new_env_name
- 或者从
environment.yaml
更新现有环境,此时现有环境需要和environment.yaml
里的name字段一致,否则要用--name
conda env update --file environment.yaml --name cur_env_name
安装GCC编译器
- conda能够安装GCC编译器是环境管理的福音
- 能够在无root权限的情况下进行安装
- 为了精确定位当前系统需要的GCC编译器,可前往conda官网搜索GCC包,如下
- 对于64位的Linux系统,安装gcc_impl_linux-64
conda create --name gcc python=3.8.18
conda activate gcc
conda install gcc_impl_linux-64
- 然后进入创建的gcc环境目录,搜索gcc
cd /{你的conda安装路径}/miniconda3/envs/gcc
find -name "gcc" -type f
输出: ./libexec/gcc/x86_64-conda-linux-gnu/11.2.0/gcc
- 最后将查找到的gcc文件的目录,永久加入到环境变量中
vim ~/.bashrc
# 最下面添加一行
export PATH="$PATH:/{你的conda安装路径}/miniconda3/envs/gcc/libexec/gcc/x86_64-conda-linux-gnu/11.2.0"
- 然后关闭当前命令行,再打开,就能在任意环境下使用gcc编译器了
$ gcc --version
gcc (Anaconda gcc) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
更多推荐
所有评论(0)