diff --git a/extension/pyenv.ts b/extension/pyenv.ts index 8690826..aa4d792 100644 --- a/extension/pyenv.ts +++ b/extension/pyenv.ts @@ -149,6 +149,7 @@ export class PythonEnvironmentManager extends DisposableContext { private envChangeEmitter: vscode.EventEmitter; private displayedSDKError: boolean = false; private lastLoadedEnv: string | undefined = undefined; + private activeSDK: SDK | undefined = undefined; constructor(logger: Logger, reporter: TelemetryReporter) { super(); @@ -178,8 +179,8 @@ export class PythonEnvironmentManager extends DisposableContext { } } - /// Load the active SDK from the currently active Python environment, or undefined if one is not present. - public async getActiveSDK(): Promise { + /// Finds the active SDK from the currently active Python environment, or undefined if one is not present. + public async findActiveSDK(): Promise { assert(this.api !== undefined); // Prioritize retrieving a monorepo SDK over querying the environment. const monorepoSDK = await this.tryGetMonorepoSDK(); @@ -227,6 +228,15 @@ export class PythonEnvironmentManager extends DisposableContext { } } + /// Load the active SDK from the currently active Python environment, or undefined if one is not present. + public async getActiveSDK(): Promise { + if (this.activeSDK) { + return this.activeSDK; + } + this.activeSDK = await this.findActiveSDK(); + return this.activeSDK; + } + private async displaySDKError(message: string) { if (this.displayedSDKError) { return;