diff --git a/extensions/notebook/src/jupyter/jupyterServerInstallation.ts b/extensions/notebook/src/jupyter/jupyterServerInstallation.ts index 87fb95d589..22830b1188 100644 --- a/extensions/notebook/src/jupyter/jupyterServerInstallation.ts +++ b/extensions/notebook/src/jupyter/jupyterServerInstallation.ts @@ -36,6 +36,7 @@ const msgSkipPythonInstall = localize('msgSkipPythonInstall', "Python already ex const msgWaitingForInstall = localize('msgWaitingForInstall', "Another Python installation is currently in progress. Waiting for it to complete."); function msgDependenciesInstallationFailed(errorMessage: string): string { return localize('msgDependenciesInstallationFailed', "Installing Notebook dependencies failed with error: {0}", errorMessage); } function msgDownloadPython(platform: string, pythonDownloadUrl: string): string { return localize('msgDownloadPython', "Downloading local python for platform: {0} to {1}", platform, pythonDownloadUrl); } +function msgPackageRetrievalFailed(errorMessage: string): string { return localize('msgPackageRetrievalFailed', "Encountered an error when trying to retrieve list of installed packages: {0}", errorMessage); } export class JupyterServerInstallation { public apiWrapper: ApiWrapper; @@ -519,14 +520,19 @@ export class JupyterServerInstallation { } public async getInstalledPipPackages(): Promise { - let cmd = `"${this.pythonExecutable}" -m pip list --format=json`; - let packagesInfo = await this.executeBufferedCommand(cmd); - - let packagesResult: PythonPkgDetails[] = []; - if (packagesInfo) { - packagesResult = JSON.parse(packagesInfo); + try { + let cmd = `"${this.pythonExecutable}" -m pip list --format=json`; + let packagesInfo = await this.executeBufferedCommand(cmd); + let packagesResult: PythonPkgDetails[] = []; + if (packagesInfo) { + packagesResult = JSON.parse(packagesInfo); + } + return packagesResult; + } + catch (err) { + this.outputChannel.appendLine(msgPackageRetrievalFailed(utils.getErrorMessage(err))); + return []; } - return packagesResult; } public installPipPackages(packages: PythonPkgDetails[], useMinVersion: boolean): Promise { @@ -549,19 +555,25 @@ export class JupyterServerInstallation { } public async getInstalledCondaPackages(): Promise { - let condaExe = this.getCondaExePath(); - let cmd = `"${condaExe}" list --json`; - let packagesInfo = await this.executeBufferedCommand(cmd); + try { + let condaExe = this.getCondaExePath(); + let cmd = `"${condaExe}" list --json`; + let packagesInfo = await this.executeBufferedCommand(cmd); - if (packagesInfo) { - let packagesResult = JSON.parse(packagesInfo); - if (Array.isArray(packagesResult)) { - return packagesResult - .filter(pkg => pkg && pkg.channel && pkg.channel !== 'pypi') - .map(pkg => { name: pkg.name, version: pkg.version }); + if (packagesInfo) { + let packagesResult = JSON.parse(packagesInfo); + if (Array.isArray(packagesResult)) { + return packagesResult + .filter(pkg => pkg && pkg.channel && pkg.channel !== 'pypi') + .map(pkg => { name: pkg.name, version: pkg.version }); + } } + return []; + } + catch (err) { + this.outputChannel.appendLine(msgPackageRetrievalFailed(utils.getErrorMessage(err))); + return []; } - return []; } public installCondaPackages(packages: PythonPkgDetails[], useMinVersion: boolean): Promise {