Frontsky
Frontsky

Reputation: 43

Powershell not recognizing conda as cmdlet, function, or operable program

I've been having this issue on my new laptop for a couple of hours and cannot figure out what's causing it. I'm trying to install scikit-learn with conda and get the following error

conda : The term 'conda' is not recognized as the name of a cmdlet, function, script file, or operable program. Check

the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + conda install -c anaconda scikit-learn + ~~~~~ + CategoryInfo : ObjectNotFound: (conda:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

Has anybody else had a similar issue on Windows 10?

Upvotes: 3

Views: 9813

Answers (3)

tbs
tbs

Reputation: 480

I previously had Python installed before conda and since having both together is said to be bring complications I uninstalled the original Python interpreter. This is what worked for me when the same error came up while trying to run a python script using conda.

TLDR; Simply add the path of conda.exe to the environment variables.

Upvotes: 0

Kurt Peters
Kurt Peters

Reputation: 301

I found this online: Unblock-File -Path .\Get-RemoteProgram.ps1 I'm going to try that command in power shell as soon as I can.

Upvotes: 0

postanote
postanote

Reputation: 16096

Have you already activated the environment for this use case?

There is a long running thread about this on the GitHub conda discussion regarding conda failures various Windows 7 and higher, here:

https://github.com/conda/conda/issues/626

One suggestion is:

The down and dirty:

  1. Check to see if activate works in cmd.exe.

  2. If doesn't work or not acceptable--as @TurboTim shows:

    Powershell needs the path to each env (anaconda3\envs\someenv\py33.exe. Laborious! :p

    If you don't mind polluting your powershell a little, you can create a profile script which is run every time you open powershell. The below will add the functions Invoke-CmdScript, Conda-Activate, Conda-Deactivate to your powershell. See Tim's link above for why.

    PS C:> New-Item -Path $profile -ItemType File -Force

This creates a script at:

PS C:\> echo $profile

...something like C:\Users\yourUser\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 Edit that script.

PS C:\> explorer $profile

Add this code, save, and reopen powershell (or . $profile ) :

function Invoke-CmdScript {
  param(
    [String] $scriptName
  )
  $cmdLine = """$scriptName"" $args & set"
  & $Env:SystemRoot\system32\cmd.exe /c $cmdLine |
  Select-String '^([^=]*)=(.*)$' | ForEach-Object {
    $varName = $_.Matches[0].Groups[1].Value
    $varValue = $_.Matches[0].Groups[2].Value
    Set-Item Env:$varName $varValue
  }
}
$condaRoot = "$Env:USERPROFILE\Anaconda3"
function Conda-Activate([string]$condaEnv) {Invoke-CmdScript $condaRoot\Scripts\activate.bat $condaEnv}
function Conda-Deactivate {Invoke-CmdScript $condaRoot\Scripts\deactivate.bat}


Usage:
C:\> Conda-Activate TFTheano
C:\> Conda-Activate root
C:\> conda info --envs

Disclaimers: Deactivate, as written, didn't do the job for me, thus I just use Conda-Activate to move around. Also, I don't suspect there are security cautions with adding Invoke-Cmd to profile, so please chime in if 2 cents

Upvotes: 2

Related Questions