Notebooks: Support User-Installed Kernels (#10194)

* Fixes for attach to. Still need to update cache

* Don't have jupyter hardcoded

* Handle DOTNET_ROOT env var

* Fix on load

* Put behind feature flag

* Cleanup

* Error check

* PR feedback
This commit is contained in:
Chris LaFreniere
2020-04-29 10:34:27 -07:00
committed by GitHub
parent 5b57b13005
commit 0a3a0ec80f
7 changed files with 78 additions and 39 deletions

View File

@@ -332,6 +332,12 @@ export class JupyterServerInstallation implements IJupyterServerInstallation {
let env = Object.assign({}, process.env);
delete env['Path']; // Delete extra 'Path' variable for Windows, just in case.
env['PATH'] = this.pythonEnvVarPath;
// We don't want Jupyter to know about DOTNET_ROOT, as it's been modified by the liveshare experience
// Without this, won't be able to find the ASP.NET bits
if (process.env['DOTNET_ROOT']) {
delete env['DOTNET_ROOT'];
}
this.execOptions = {
env: env
};

View File

@@ -108,6 +108,11 @@ export class JupyterSessionManager implements nb.SessionManager {
// TODO add more info to kernels
return kernel;
});
// For now, need to remove PySpark3, as it's been deprecated
// May want to have a formalized deprecated kernels mechanism in the future
kernels = kernels.filter(k => k.name !== 'pyspark3kernel');
let allKernels: nb.IAllKernels = {
defaultKernel: specs.default,
kernels: kernels
@@ -343,6 +348,11 @@ export class JupyterSession implements nb.ISession {
}
for (let i = 0; i < Object.keys(process.env).length; i++) {
let key = Object.keys(process.env)[i];
// DOTNET_ROOT gets set as part of the liveshare experience, but confuses the dotnet interactive kernel
// Not setting this environment variable for notebooks removes this issue
if (key.toLowerCase() === 'dotnet_root') {
continue;
}
if (key.toLowerCase() === 'path' && this._pythonEnvVarPath) {
allCode += `%set_env ${key}=${this._pythonEnvVarPath}${EOL}`;
} else {