I've done a fresh install of miniconda on my mac. If I run type conda
in my terminal i get /Users/myusername/miniconda3/bin/conda
. I can create an conda environment and then activate it with source activate myenv
. After this command, conda commands will give this response
(myenv) ➜ ~ conda list
local:3: command not found: any-json
usage: conda [-h] [-V] command ...
conda is a tool for managing and deploying applications, environments and packages.
Options:
positional arguments:
command
clean Remove unused packages and caches.
config Modify configuration values in .condarc. This is modeled
after the git config command. Writes to the user .condarc
file (/Users/myusername/.condarc) by default.
create Create a new conda environment from a list of specified
packages.
help Displays a list of available conda commands and their help
strings.
info Display information about current conda install.
install Installs a list of packages into a specified conda
environment.
list List linked packages in a conda environment.
package Low-level conda package utility. (EXPERIMENTAL)
remove Remove a list of packages from a specified conda environment.
uninstall Alias for conda remove. See conda remove --help.
search Search for packages and display associated information. The
input is a MatchSpec, a query language for conda packages.
See examples below.
update Updates conda packages to the latest compatible version. This
command accepts a list of package names and updates them to
the latest versions that are compatible with all other
packages in the environment. Conda attempts to install the
newest versions of the requested packages. To accomplish
this, it may update some packages that are already installed,
or install additional packages. To prevent existing packages
from updating, use the --no-update-deps option. This may
force conda to install older versions of the requested
packages, and it does not prevent additional dependency
packages from being installed. If you wish to skip dependency
checking altogether, use the '--force' option. This may
result in an environment with incompatible packages, so this
option must be used with great caution.
upgrade Alias for conda update. See conda update --help.
optional arguments:
-h, --help Show this help message and exit.
-V, --version Show the conda version number and exit.
Now, if I run type conda
again I get conda is a shell function from /Users/myusername/miniconda3/etc/profile.d/conda.sh
as response instead. If I open up a new terminal, conda commands will work again as before I did run `source activate myenv``
I'm wondering what can be causing this problem and how to fix it.
Maybe worth mentioning that I've added export PATH=/Users/myusername/miniconda3/bin:$PATH
to my .zshrc file as I'm running zshell.
Edit 1
Using conda activate
gives me the following error
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If your shell is Bash or a Bourne variant, enable conda for the current user with
$ echo ". /Users/myusername/miniconda3/etc/profile.d/conda.sh" >> ~/.bash_profile
or, for all users, enable conda with
$ sudo ln -s /Users/myusername/miniconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh
The options above will permanently enable the 'conda' command, but they do NOT
put conda's base (root) environment on PATH. To do so, run
$ conda activate
in your terminal, or to put the base environment on PATH permanently, run
$ echo "conda activate" >> ~/.bash_profile
Previous to conda 4.4, the recommended way to activate conda was to modify PATH in
your ~/.bash_profile file. You should manually remove the line that looks like
export PATH="/Users/myusername/miniconda3/bin:$PATH"
^^^ The above line should NO LONGER be in your ~/.bash_profile file! ^^^
If I do as the error message tells me to do, which is adding the line . /Users/myusername/miniconda3/etc/profile.d/conda.sh
. /Users/myusername/miniconda3/etc/profile.d/conda.sh
to my .zshrc file, then conda commands don't work. Eg conda activate
gives me the same message as for conda list
which I pasted in the beginning of my question.
Edit 2 I've found a solution. In the bash script located in /Users/myusername/miniconda3/etc/profile.d/conda.sh
there is a function called conda which looks like this
conda() {
if [ "$#" -lt 1 ]; then
$_CONDA_EXE
else
/local cmd="$1"
shift
case "$cmd" in
activate)
_conda_activate "$@"
;;
deactivate)
_conda_deactivate "$@"
;;
install|update|uninstall|remove)
$_CONDA_EXE "$cmd" "$@" && _conda_reactivate
;;
*)
$_CONDA_EXE "$cmd" "$@"
;;
esac
fi
}
When debugging this function I noticed that the cmd
variable was empty. But if I change the line /local cmd="$1"
to local cmd="$1"
all my problems are solved. I don't know why. Does anyone have any ideas why? what does this backslash do?
Modify PATH in your ~/.bash_profile file.
You should manually remove the line that looks like
export PATH="/Users/myusername/miniconda3/bin:$PATH"
The above line should NO LONGER be in your ~/.bash_profile file!
Reference:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.