【Power Shell】Invoke-Expression ,Invoke-Expression -Command $activateCommand;错误或power shell激活虚拟环境报错失败

power Shell 一打开就有红字错误:

Invoke-Expression : 所在位置 行:1 字符: 1164
+ ... \Xshell 7;C:\Program Files (x86)\NetSarang\Xftp 7;"C:\Program Files\N ...
+                                                        ~~~~~~~~~~
表达式或语句中包含意外的标记“C:\Program”。
所在位置 D:\Programe\Anaconda\shell\condabin\Conda.psm1:109 字符: 15
+               Invoke-Expression -Command $activateCommand;
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : UnexpectedToken,Microsoft.PowerShell.Commands.InvokeExpressionCommand

这边我使用了很多无用的办法:
①conda init
②conda install -n root -c pscondaenvs pscondaenvs
③把Invoke-Expression -Command $activateCommand;
改成

    If(-not [String]::IsNullOrEmpty($activateCommand)) {
          Invoke-Expression -Command $activateCommand;
    }

后来我在查看的时候发现他们很多都有一种思路,那就是系统环境变量出了问题;
所以我顺着这个思路进行了修改
所以接下来我们定位到报错信息的
在这里插入图片描述
这些标志里面,这些内容,其实是系统环境变量path里面的内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后我们把
在这里插入图片描述
这个变量找到:
然后我们发现这个变量是:

C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v11.3\lib\x64;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin;
C:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v11.3\common\lib\x64;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin\

然后我们去看一看文件管理器
在这里插入图片描述
我们发现有2个cuda,那既然这样,11.3这个环境变量又报错了,我们干脆直接把有关CUDA\11.3的环境变量删掉。就用cuda10.1【因为我的很多深度学习环境安装的torchgpu版本就是cu101的,所以我保留cu101的环境变量】
删掉之后就这样了:
在这里插入图片描述
可以看到cuda后面不是

在这里插入图片描述
这个环境变量已经给我删掉了,这个最终的结果虽然和报错的一部分信息是一样的,因为我忘记截图没删之前的环境变量了。
但是这个报错已经给我们解决了,打开已经不会再报错了:
在这里插入图片描述

我在网上看到很多人都没有用我相同的解决方式,可能是因为他们没有像我一样装2个版本的CUDA,所以没有冲突。所以说,如果搞深度学习的朋友们的power shell出现开头的问题,很有可能是出现了和我一样的cuda环境变量冲突问题,只要把报错
在这里插入图片描述
这里的环境变量删掉【前提是你也是多种版本环境变量冲突】
或者是,你可以考虑把环境变量的位置调整一下看看。
那么,遇到的这一个问题就解决了。

这期结束,下期再见。

  • 37
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: 这句话的意思是,无法将参数绑定到参数“command”,因为该参数为空字符串。也就是说,无法执行该命令,因为命令参数为空。可能是因为输入的命令不正确或者缺少必要的参数。需要检查命令的语法和参数是否正确。 ### 回答2: invoke-expression是一个PowerShell命令,可以在Powershell中执行字符串命令或运行脚本。当出现“无法将参数绑定到参数‘command’,因为该参数为空字符串”错误时,表示执行的命令字符串为空。这种情况可能是由于以下原因之一引起的: 1.变量未初始化:在执行invoke-expression之前,如果声明的变量未初始化或者为空,则会出现此错误。 2.命令字符串中未指定参数:如果命令字符串中未指定参数,也会导致该错误。例如,执行“invoke-expression”,而不是“invoke-expression Get-Service”。 3.使用空字符串表达式:在某些情况下,命令字符串中可能包含空字符串表达式,例如“invoke-expression “””,这也会导致该错误。 为了解决这个问题,可以尝试以下解决方法: 1.确认变量或命令字符串是否初始化,并确保不为空。 2.在命令字符串中指定正确的参数。 3.如果命令字符中包含空字符串表达式,请删除它或使用正确的表达式。例如,“invoke-expression 'Hello World'”(在引号中添加正确的命令字符串)。 总之,当执行invoke-expression命令时出现“无法将参数绑定到参数‘command’,因为该参数为空字符串”错误时,请仔细检查命令字符串和参数是否正确,并尝试向该命令中传递非空字符串。 ### 回答3: 在PowerShell(一种Windows操作系统上的脚本语言)中,如果在使用Invoke-Expression命令进行单行脚本执行时,发现提示"无法将参数绑定到参数'command',因为该参数为空字符串",通常代表着在执行命令时,参数中存在空字符串,导致无法实现绑定。 那么什么是参数的绑定呢?参数绑定是指将一个参数值赋给某个命令中的参数,以便于该命令的执行。当我们使用Invoke-Expression命令时,需要将需要执行的命令作为参数传递给该命令。如果参数中存在空字符串,会导致命令尝试将空字符串作为命令执行,从而出现"无法将参数绑定到参数'command',因为该参数为空字符串"的错误提示。 为了解决这个问题,我们需要先检查一下是否存在空字符串。可以通过在传递参数之前,使用字符串Trim()方法,将空白字符从参数中删除,然后再将处理过的参数传递给Invoke-Expression命令执行。示例如下: $command = " Get-Process | Where-Object {$_.Name -eq 'explorer'} " if ($command.Trim() -ne "") { Invoke-Expression $command } else { Write-Host "请输入有效命令" } 以上代码做了以下处理: 1. 创建一个字符串变量$command,并赋予其一个命令字符串,该命令用于查找名为“explorer”的进程。 2. 使用$command.Trim()方法,将命令字符串中的空白字符删除。 3. 进行条件判断,如果处理后的命令字符串不为空,则使用Invoke-Expression命令执行该命令。 4. 如果处理后的命令字符串为空,则输出"请输入有效命令"的提示信息。 通过这样的处理,我们可以避免在使用Invoke-Expression命令时出现"无法将参数绑定到参数'command',因为该参数为空字符串"的错误提示。此外,如果在编写PowerShell脚本时,可以尽量避免出现空字符串参数,从而减少错误的发生。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值