【教程】windows11下vscode与powershell不能正确使用conda环境的问题

一、前言

最近换了新设备,安装Conda之后遇到了一些很邪门的问题:

  1. vscode不能正确扫描到Conda创建的虚拟环境;
  2. Conda创建的虚拟环境默认放在了C盘;
  3. vscode执行python文件时提示 ” 此时不应有 & “;
  4. powershell无法加载Conda虚拟环境;
  5. 安装库时提示当前用户没有写入权限。

经过一下午的摸索(对....浪费了三四个小时),终于得以解决。

二、vscode不能正确扫描Conda创建的虚拟环境

安装完miniconda并创建虚拟环境后(Conda外没有python环境),vscode不能自动扫描出可以使用的python解释器,并且无法手动选择(.py文件中可以,.ipynb中不行)。

这是由于miniconda安装完成后不会自动将目录添加至环境变量中,需要手动加入以下路径(有不加入环境变量的解决办法,但是我建议加入):

  • E:\Application_miniconda3
  • E:\Application_miniconda3\Library\bin
  • E:\Application_miniconda3\Scripts
  • E:\Application_miniconda3\condabin

之后重启vscode,就可以自动扫描出当前可用的虚拟环境及解释器。

三、Conda创建的虚拟环境默认放在了C盘

如果发现创建虚拟环境时,Conda将其放在了C:\Users\用户名.conda\envs目录中,可能是因为权限问题(或其他问题)。

虚拟环境的大小无法控制,经常性的出现几个G甚至上百G的情况,不建议放在C盘。

解决方案:

  1. 进入C:\Users\用户名目录,找到.condarc文件(没有就创建);

  2. // .condarc文件追加内容
    envs_dirs:
      - E:\Application_miniconda3\envs
    pkgs_dirs:
      - E:\Application_miniconda3\pkgs
      - C:\Users\用户名\.conda\pkgs
    
  3. 删除之前的环境,重新创建即可

  4. 删除命令:conda remove --name 环境名称 --all

四、vscode执行python文件时提示 ” 此时不应有 & “

当vscode的控制台使用cmd时,执行python文件就可能报这样的错误,这是因为vscode拼接了两个命令,一个是"conda activate 环境名称"一个是"python -u python文件",使用"&"进行拼接。

这里需要将默认控制台指定为powershell,powershell可以忽略行首的”&“符号。

点击vscode的terminal箭头,选择修改配置文件:

选择PowerShell

五、Powershell无法加载Conda虚拟环境

依照第四步设置powershell作为控制台后,仍旧无法正确的执行python文件,是因为windows11和conda关于powershell的配置策略导致的,依次执行以下步骤即可解决。

  1. 首先利用conda命令修改与powershell相关的配置文件:
    • 在powershell中执行:conda init powershell

此时关闭powershell再次打开就会出现如下报错:

. : 无法加载文件 D:\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅
https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3

这是由于每次打开PowerShell时,PowerShell都会尝试执行一次用户的配置文件,但Windows 11的默认策略限制不允许执行本地的脚本文件,所以会提示无法加载文件。

  1. 打开powershell,修改安全策略:
    1. 在powershell中执行:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    2. 之后按Y
      重启powershell与vscode即可。

六、安装库时提示当前用户没有写入权限

之后你可能还会遇到The current user does not have write permissions to the target environment,意思是当前用户在目标环境中没有写入权限。

一个可能的原因是安装conda时选择了all user,而conda.exe在all user权限下的文件夹中,当前登录用户没有对应的权限。

  1. 右键conda安装目录的文件夹,选择属性——安全——编辑;

  1. 进入安全的编辑后,选中当前登录的用户,在下方权限中给予“完全控制”,应用,确定即可。

posted @ 2024-01-23 21:12  小拳头呀  阅读(182)  评论(0编辑  收藏  举报