Anaconda创建环境,配置镜像源,环境变量,pip/conda install,PyTorch找不到CUDA,CondaHTTPError: HTTP 404 NOT FOUND诸问题一站式解决

1 使用conda创建虚拟环境

        前提:安装好Anaconda并将其加到环境变量中:

        如果你还没有安装,可以参考Anaconda安装-超详细版(2023)

        这里使用命令行进行操作,注意指令的开头都为conda。因为Anaconda创建虚拟环境,实际上是用conda这个包管理系统进行依赖关系的控制;Anaconda是一个包括了python解释器、conda、Jupyter Notebook、TensorFlow、PyTorch等多个软件包的集合,我们只需要用其中的conda。

1.1 conda创建虚拟环境的命令:

conda create -n <环境名> python=<版本号>

1.2 使用conda虚拟环境(cmd/VSCode/PyCharm)

1.2.1 cmd

        在命令行中,使用

conda activate <环境名>

        启用虚拟环境:

        启动成功后,每一行开头会用括号标识出当前所在的虚拟环境,想退出虚拟环境就使用:

conda deactivate

1.2.2 VSCode

        在VSCode中,这里默认已经完成了VSCode中python环境的配置。启动VSCode(在任意工程中都可以):

        使用顶部搜索栏的快捷键是Ctrl+p,先进入顶部搜索栏,再输入>,输入python select interpreter,选择该项:

        在展开的列表显示了正在使用的解释器,同时可以选择已有的虚拟环境:

1.2.3 PyCharm

        在PyCharm中,可以在创建项目时选定解释器(虚拟环境):

        这里点击 "Add Interpreter",在接下来的选项卡中,最左侧选择第一项"Virtualenv Environment",而后在"Interpreter:"中选择目标解释器(Existing和New选项其实哪个都可以,并不重要)。如果下拉菜单中没有,就在右侧三个点中找到新创建的环境的路径,添加其下的python.exe。

        若要对已经创建的项目更改环境,先打开设置:

        在左侧选中"Project: <文件名>"项,而后选Python Interpretor,后续操作与上文类似。

1.3 我创建的虚拟环境在哪?

        可以在cmd中使用命令:

conda info

        获取当前conda的相关信息,包括虚拟环境的保存地址:

         按照显示信息,当前使用的是第一个目录即"D:\Anaconda\envs"。若要修改默认存储目录(该位置一般在C盘),可以修改配置文件".condarc",一般位于C:\Users\<用户名>目录下:

 

        以记事本打开,修改envs_dirs项为想要的路径就可以了。

        如果没有该文件,可以手动创建一个,然后重复以上步骤,命令为:

conda config --add channels r

        另一种方案是在Anaconda Navigator的图形化界面中操作。选中左上角File中的Preference:

        选择Config Conda:

        在打开的文档中修改envs_dirs项即可:

2 用conda进行包管理

2.1 为conda添加镜像源

        由于境内访问下载速度慢,需要给conda添加国内的镜像源。可以在1.3中提到的配置文件.condarc里直接添加镜像源,在channels下按格式增加URL即可:

        这里使用的清华源:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - defaults

        注意:既然使用了国内的镜像源,请不要开启网络代理或VPN,否则一样会卡顿或断连

        另外,在命令行中也可以添加镜像源:

conda config --add channels <镜像源URL>

        然而,在conda创建的虚拟环境中,pip并不共享conda的镜像源,若需要用pip安装所需的包,可以使用如下指令(-i 后面添加镜像源):

pip install <包名> -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 CondaHTTPError: HTTP 404 NOT FOUND

        如果你添加镜像源的格式如下:

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/cloud/

       那么极有可能出现错误

CondaHTTPError: HTTP 404 NOT FOUND for url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud//xxx

        这是一个简单的格式问题,镜像源的结尾不能为'/',因为conda搜寻资源时会自动加上'/',导致路径为"aaa//bbb",出现无效路径进而报错HTTP 404,如下修改即可:

- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/cloud

2.3 conda install还是pip install?

        在虚拟环境中,推荐使用conda进行包的安装,因为conda能够解析和管理整个环境中的所有包和它们的依赖关系,pip安装包时只解析当前包的依赖关系,可能导致对所有包的依赖关系的破坏。当且仅当conda不含有对应资源时,才使用pip install。

        尽管对于每个虚拟环境来说,它们使用的都是一样的、体外的conda install命令,但这不会导致虚拟环境之间的隔离失效。当你使用 Conda 安装包时,包会安装在当前激活的 Conda 虚拟环境中。每个 Conda 虚拟环境都有自己独立的包存储目录(/Lib/site-packages/),不同环境之间的包不会相互影响。

2.4 环境变量问题

        当你激活一个 Conda 虚拟环境时,以下事情会发生:

  1. 环境变量的更新:Conda 会修改 PATH 环境变量,使得当前环境的 Python 和已安装工具优先于系统中的版本。例如,激活环境 myenv 会将 ~/anaconda3/envs/myenv/bin (或 Windows 上的 C:\Users\<YourUsername>\Anaconda3\envs\myenv\Scripts) 添加到 PATH
  2. Python 解释器切换:当前环境的 Python 解释器和库路径会优先于系统默认的 Python 解释器。
  3. 环境变量加载:Conda 会加载在 activate.d 目录中的脚本,以设置任何你定义的自定义环境变量。

        若需要每次启动虚拟环境时配置好相应的环境变量,建议修改activate.d中的脚本,这里不再赘述。建议在虚拟环境中直接安装相应的包或程序,不要从外部的系统中引入。

        例如对于PyInstaller而言,PyInstaller关联于Python解释器的版本,如果在虚拟环境中引入主系统的PyInstaller,很可能因为解释器版本不一造成冲突,同时这种情况下PyInstaller分析的是主系统范围内的库,而不是虚拟环境中的依赖关系

3 PyTorch&CUDA踩坑

        如果在虚拟环境中直接使用:

conda install pytorch

        大概率会产生如下结果:

        PyTorch提示CUDA不可用,此时无法将模型训练转移至GPU,也无法使用不支持在CPU上的模组。conda并不负责了解CUDA的依赖信息,解决这个问题的办法是手动安装正确版本的PyTorch。

        请按照以下步骤安装PyTorch。

  1. 查询本电脑的CUDA版本,以我的电脑为例,我的CUDA版本号为12.2。可以在命令行中使用以下命令:
    nvidia-smi

  2. 在PyTorch官网Start Locally | PyTorch,查询CUDA 12.2(或你的版本)对应的下载方法,这里选择最接近(且小于等于)当前版本号的选项:
  3. 复制以上指令到虚拟环境中,即完成安装,安装后PyTorch表示CUDA可用:

4 ImportError: DLL load failed

        引入某些模块时,可能会出现如下报错:ImportError: DLL load failed while importing _ctypes: The specified module could not be found.

        这个报错是由于某个原因导致的dll文件丢失,解决方法是在Anaconda\Library\bin文件夹下,将ffi.dll、ffi-7.dll、ffi-8.dll都拷贝一份,到当前使用的虚拟环境中。

        需要拷贝到的目标地址即为该环境名的目录下:

若有任何错误,请在评论区指出,有其他问题也可以提问。

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值