|
@@ -52,7 +52,8 @@ def get_app_dir(app_dir=None):
|
|
|
app_dir = pjoin(sys.prefix, 'share', 'jupyter', 'lab')
|
|
|
|
|
|
# Check for a user level install.
|
|
|
- if hasattr(site, 'getuserbase') and here.startswith(site.getuserbase()):
|
|
|
+ userbase = getattr(site, 'userbase', '')
|
|
|
+ if here.startswith(userbase) and not app_dir.startswith(userbase):
|
|
|
app_dir = pjoin(site.getuserbase(), 'share', 'jupyter', 'lab')
|
|
|
|
|
|
# Check for a system install in '/usr/local/share'.
|
|
@@ -154,6 +155,7 @@ def install_extension_async(extension, app_dir=None, logger=None, abort_callback
|
|
|
|
|
|
# Run npm install if needed
|
|
|
if (os.path.exists(extension) and
|
|
|
+ os.path.isdir(extension) and
|
|
|
not os.path.exists(pjoin(extension, 'node_modules'))):
|
|
|
yield run([get_npm_name(), 'install'], cwd=extension, logger=logger,
|
|
|
abort_callback=abort_callback)
|
|
@@ -209,6 +211,10 @@ def install_extension_async(extension, app_dir=None, logger=None, abort_callback
|
|
|
shutil.move(pjoin(target, fname), pjoin(app_dir, 'extensions'))
|
|
|
shutil.rmtree(target)
|
|
|
|
|
|
+ # Remove any existing package from staging/node_modules to force
|
|
|
+ # npm to re-install it from the tarball.
|
|
|
+ target = pjoin(app_dir, 'staging', 'node_modules', data['name'])
|
|
|
+
|
|
|
|
|
|
def link_package(path, app_dir=None, logger=None):
|
|
|
"""Link a package against the JupyterLab build."""
|
|
@@ -901,6 +907,8 @@ def _get_package_template(app_dir, logger):
|
|
|
data['jupyterlab']['extensions'].pop(item)
|
|
|
else:
|
|
|
data['jupyterlab']['mimeExtensions'].pop(item)
|
|
|
+ # Remove from dependencies as well.
|
|
|
+ data['dependencies'].pop(item)
|
|
|
|
|
|
return data
|
|
|
|