forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid spawning Conda to get list of environments and conda version #23413
Labels
debt
Covers everything internal: CI, testing, refactoring of the codebase, etc.
Comments
DonJayamanne
added
debt
Covers everything internal: CI, testing, refactoring of the codebase, etc.
and removed
feature-request
Request for new features or functionality
labels
May 13, 2024
github-actions
bot
added
the
triage-needed
Needs assignment to the proper sub-team
label
May 13, 2024
@karthiknadig |
DonJayamanne
added a commit
that referenced
this issue
May 13, 2024
**Fixes** * #23413 * & the fact that we always use the same conda exe to manage all conda envs, even if multiple are installed. * Step 1: * Look for conda install folders in known locations such as `/<user home>/miniconda3`, `<user profile>/Anaconda3` * Step 2: * For each install location identified, inspect that folder and extract the * Conda executable * All environments belonging to that conda installation * Step 3: * Old approach, * 1. find any conda in sys path or other locations and find conda installation via that mechanism * 2. Get all envs from environments.txt file (any remaining conda envs not discovered in 1 & 2 will be discoverred here and use some the global conda exe) Once we have step 1 and 2, I do not expect anything new to show up in step 3, Even if users install conda into some custom locations (the solution would be to run step 1 with the custom location provided by user in settings.json file) **How to find environments?** * Look in the `envs` folder of the conda installation * Look at the entries in the `environments.txt` file * Look at the `env_dirs` in the `.condarc` file With these two, we should be able to eliminate the need to ever spawn conda to get the env directories. **How do we know whether a conda environment belongs to a specific conda installation** * If it is in the `envs` sub directory of the conda installation * Else, have a look at `<env folder>/conda-meta/history` file to look at the conda installation that was used to create this environment
Do we want to adopt this into TS discovery? The plan is to get rid of the entire TS discover and resolve infrastructure eventually. |
Fixed in the native locator. |
anthonykim1
pushed a commit
to anthonykim1/vscode-python
that referenced
this issue
May 16, 2024
**Fixes** * microsoft#23413 * & the fact that we always use the same conda exe to manage all conda envs, even if multiple are installed. * Step 1: * Look for conda install folders in known locations such as `/<user home>/miniconda3`, `<user profile>/Anaconda3` * Step 2: * For each install location identified, inspect that folder and extract the * Conda executable * All environments belonging to that conda installation * Step 3: * Old approach, * 1. find any conda in sys path or other locations and find conda installation via that mechanism * 2. Get all envs from environments.txt file (any remaining conda envs not discovered in 1 & 2 will be discoverred here and use some the global conda exe) Once we have step 1 and 2, I do not expect anything new to show up in step 3, Even if users install conda into some custom locations (the solution would be to run step 1 with the custom location provided by user in settings.json file) **How to find environments?** * Look in the `envs` folder of the conda installation * Look at the entries in the `environments.txt` file * Look at the `env_dirs` in the `.condarc` file With these two, we should be able to eliminate the need to ever spawn conda to get the env directories. **How do we know whether a conda environment belongs to a specific conda installation** * If it is in the `envs` sub directory of the conda installation * Else, have a look at `<env folder>/conda-meta/history` file to look at the conda installation that was used to create this environment
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Based on the following source code for
Conda
list_all_known_prefixes
We can get all the environments from
envs
folderThe conda version can be extracted from the
conda-meta
folder forconda-<version>*.json
fileThe text was updated successfully, but these errors were encountered: