简体   繁体   中英

Can't access activate, deactivate, or conda inside a conda environment

So if I load a conda environment and want to use conda to install a package (or whatever else), I have to specify conda.exe .

What I expect to work:

(randomenv) λ conda --version
The system cannot find the path specified.

What actually works:

(randomenv) λ conda.exe --version
conda 4.5.4

Further complicating things, the following:

(randomenv) λ where conda
C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\conda
C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\conda.bat
C:\ProgramData\Anaconda3\Scripts\conda.exe

Is the first entry supposed to be C:\\Users\\[USERNAME]\\AppData\\Local\\conda\\conda\\envs\\randomenv\\Scripts\\conda.exe and the environment got setup wrong or something?

Edit:

We're now in to usage breaking issues. I can't use deactivate , because deactivate doesn't have a .exe extension.

Per usual, where deactivate turns up:

C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\deactivate
C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\deactivate.bat
C:\ProgramData\Anaconda3\Scripts\deactivate
C:\ProgramData\Anaconda3\Scripts\deactivate.bat

Even more hilariously frustrating:

(randomenv) λ C:\Users\[USERNAME]\AppData\Local\conda\conda\endevs\randomenv\Scripts\deactivate
The system cannot find the path specified.

and then it gets even better:

(randomenv) λ cd C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts\

C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts
(randomenv) λ ls
2to3.exe*       conda*          easy_install.exe*       epylint-script.py  iptest3.exe*        ipython-script.py  pip-script.py    pygmentize-script.py  pyreverse.bat        symilar.exe*
2to3-script.py  conda.bat       easy_install-script.py  idle.exe*          ipython.exe*        isort.exe*         pydoc.exe*       pylint.bat            pyreverse.exe*       symilar-script.py
activate*       deactivate*     epylint.bat             idle-script.py     ipython3.exe*       isort-script.py    pydoc-script.py  pylint.exe*           pyreverse-script.py  wheel.exe*
activate.bat    deactivate.bat  epylint.exe*            iptest.exe*        ipython3-script.py  pip.exe*           pygmentize.exe*  pylint-script.py      symilar.bat          wheel-script.py

C:\Users\[USERNAME]\AppData\Local\conda\conda\envs\randomenv\Scripts
(randomenv) λ deactivate
The system cannot find the path specified.

How can't it find a file that's in the current directory?

Edit2:

Found the following issue on GitHub which says that exiting an environment requires that you activate root . That isn't working either, because activate can't be found just like all the other functions listed above.

This just happened to me. Here is what I found out.

Within the scripts folder of my environment were three scripts:

activate.bat
conda.bat
deactivate.bat

along with three more without the .bat extension that were bash scripts. In each case, all they did was a delegate to the globally installed copy of the same tool using an absolute path name.

When given a command, such as "conda" at the prompt, Windows will search for a .com, .exe or .bat file to execute, taking the first one it finds. Because activating an environment adds it's locations to the head of the path, the first instance windows will find is the .bat file within the environment, which will be executed.

In my case, the .bat files had the wrong absolute path, and were trying to delegate to a global copy that did not exist, hence the error message. Even if you were in the environment script directory, you would still get the message because it's not the .bat file that the message refers to, but the program the .bat file delegates to.

When specifying conda.exe, you are specifically asking for the .exe file, which means the .bat file will not be found and run, and therefore the global copy is found, which of course works.

I fixed it by changing the path inside each of the .bat files to the proper path to the tool, according to the output of where x, which fixed the problem.

I had the same problem. Interestingly, when I set up a fresh environment the activate / deactivate commands work fine.

I compared the script folder for this environment with the broken environment. The broken environment had activate / deactive files in the scripts folder just like yours, but the working environment did not.

By deleting the extraneous scripts (deactivate, conda, activate, .pt-postlink), the broken environment now works again.

I suspect something else I've done corrupted this folder. Possible a package I installed is the culprit? If I figure it out I'll post back.

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM