ContinuumIO / anaconda-issues

Anaconda issue tracking
648 stars 224 forks source link

Feature Request: Keep `conda` in protected env #11336

Open mfansler opened 5 years ago

mfansler commented 5 years ago

Too many users bork their installs or run into extreme conda update conda issues. I think the propensity for such problems stems from the fact that Anaconda keeps the conda package in the base env where users tend to install lots of packages (and frequently with pip) leading to unstable envs. A simple solution to this would be to keep the conda package in a non-base env, that would not be the default location to install. Even better would be to make this env protected in some way, such that only the conda update conda command would actually alter it.

msarahan commented 5 years ago

This is a great idea. You might be interested in our work on standalone executables: https://repo.anaconda.com/pkgs/misc/conda-execs/

Those aren't perfect because they don't handle activation and things like that yet. They work great for creating, installing, and fixing broken environments, though. With those EXE's we can also set environment variables for better isolation in ways that we can't really do with user-level installations, because they would potentially be too disruptive. Things like ignoring PYTHONPATH, PYTHONHOME, and setting up the special DLL search order on windows.

This is an area we definitely intend on continuing to improve. The code for creating the standalones is at https://github.com/anacondarecipes/conda-standalone-feedstock if you're interested in looking at it and/or improving it. Long-term, we'd really like to port most of conda to a truly standalone program (probably rust) and that will further simplify these isolation problems.

mfansler commented 5 years ago

@msarahan That's great to hear and thanks for the feedback! Those execs are super useful to know about. I frequently encounter users on StackOverflow with broken Condas and typically they end up reinstalling, so it's good to know there's an alternative.