Skip to content

Wrong Python executable used when running code using PythonExecutionFactory #17613

Closed

Description

Environment data

  • VS Code version: Insiders
  • Extension version (available under the Extensions sidebar): Latest (main branch)
  • OS and version: mac
  • Python version (& distribution if applicable, e.g. Anaconda): N/A
  • Type of virtual environment used (N/A | venv | virtualenv | conda | ...): N/A
  • Relevant/affected Python packages and their versions: N/A
  • Relevant/affected Python-related VS Code extensions and their versions: N/A
  • Value of the python.languageServer setting: N/A

[NOTE: If you suspect that your issue is related to the Microsoft Python Language Server (python.languageServer: 'Microsoft'), please download our new language server Pylance from the VS Code marketplace to see if that fixes your issue]

Expected behaviour

Use the python environment provided when creating a PythonExecutionFactory

Actual behaviour

Wrong Python environment is used when creating a PythonExecutionFactory

This should be pretty evident from the following code

    public async create(options: ExecutionFactoryCreationOptions): Promise<IPythonExecutionService> {
        let { pythonPath } = options;
        if (!pythonPath) {
	  		...
        }
        pythonPath = this.configService.getSettings(options.resource).pythonPath;
   		....
        return createPythonService(
            pythonPath,
            processService,
            this.fileSystem,
            undefined,
            await windowsStoreInterpreterCheck(pythonPath),
        );
    }

If you look at the above code, pythonPath is always deafulting to pythonPath defined in settings.json even if a PythonPath has been provided in options

This causes issues in Jupyter extension as its not using the python path provided in options

Karthik Nadig (@karthiknadig) Kartik Raj (@karrtikr) /cc

Activity

  1. added
    bugIssue identified by VS Code Team member as probable bug
    triage-neededNeeds assignment to the proper sub-team
    on Oct 4, 2021
  2. DonJayamanne commented on Oct 4, 2021

    @DonJayamanne
    Author

    I'd submit a PR, looks simple enough, but not sure what we were attempting to fix when this code was changed.
    The solution looks simple as follows:

            if (!pythonPath) {
    	        pythonPath = this.configService.getSettings(options.resource).pythonPath;
            }

    Get pythonPath from settings only if its empty.

  3. added
    area-environmentsFeatures relating to handling interpreter environments
    regressionBug didn't exist in a previous release
    and removed
    triage-neededNeeds assignment to the proper sub-team
    on Oct 4, 2021
  4. locked as resolved and limited conversation to collaborators on Nov 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area-environmentsFeatures relating to handling interpreter environmentsbugIssue identified by VS Code Team member as probable bugregressionBug didn't exist in a previous release

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions