Package: jupyter-projector-proxy
Projector Integration for JupyterThe Projector Integration for Jupyter enables you to accesssupportedJetbrains IDEs in a web browser from your Jupyter environment.jupyter-projector-proxyis a Python® package based on the following packages.PackageDescriptionprojector-installerProvides infrastructure to launch any Jetbrains IDEs and connect to it from a web browser.jupyter-server-proxyExtends Jupyter environments to launch any Jetbrains IDEs as an external process alongside the notebook server. For more information seeGUI Launchers.NOTE:This packagecurrently, does not provide a kernel level integration with Jupyter.To report any issues or suggestions, see theFeedbacksection.RequirementsThis package has the same requirements as its dependencies:SeeRequirementsfromjupyter-server-proxySeeRequirementsfromprojector-installerIf not already installed, install system packages required for JetBrains-in-a-browser supportExample (ubuntu):# Install as root or superuserapt-getupdate&&\DEBIAN_FRONTEND="noninteractive"apt-getinstall-y\libxtst6\libxrender1\libfontconfig1\libxi6\libgtk-3-0Install at least one of thesupportedJetbrains IDEs. See installation examples below.After installing the desired intelliJ product, make sure that:Theidea.propertieslocated atIDE_HOME/binis writable by the user that has startedjupyter/jupyterlab/jupyterhub.IDE_HOMEis the location where you installed your desired jetbrains IDEThe installed IDEs can be discovered by this package by using one of the following options:Option 1: (Recommended)Create a link in the PATH that points to the installed jetbrains IDEs using the appropriate IDEname# Add a binary to the PATH that points to the IDE startup script.ln-s[IDE_HOME]/bin/[IDE].sh/usr/bin/[IDE]Option 2Install the IDE in standard locations/opt/[IDE]. Use this option if you are not installing multiples editions of the same product. For example, if you are installing Pycharm community edition and Pycharm Professional, use the option 1. Same applies to IntelliJ idea editions.Generic installation example:# Install IDEs as root or superusermkdir-p/opt/[IDE]curl-L"https://download.jetbrains.com/product?code=[CODE]&latest&distribution=linux"\|tar-C/opt/[IDE]--strip-components1-xzvf-# Make The idea.properties editable by the user that has started jupyter/jupyterlab/jupyterhubchown<jupyter_launch_user>[IDE_HOME]/bin/idea.properties# Add a binary to the PATH that points to the IDE startup script.RUNln-s/opt/[IDE]/bin/[IDE].sh/usr/bin/[IDE]Make sure that you replace [IDE] with thenameof the IDE in lowercase and provide itscorresponding [CODE].IntelliJ ultimate installation example:# As root or superuser# Install IntelliJ IDEA Ultimatemkdir-p/opt/ideacurl-L"https://download.jetbrains.com/product?code=IU&latest&distribution=linux"\|tar-C/opt/idea--strip-components1-xzvf-# Make The idea.properties editable# If the user you use to start jupyter/jupyter lab/ jupyter hub is named tiadenchowntiaden/opt/idea/bin/idea.properties# Create a symbolic link in PATH that points to the Intellij startup script.ln-s/opt/idea/bin/idea.sh/usr/bin/intellij-idea-ultimatePycharm community edition example:# As root or superuser# Install Pycharm Communitymkdir-p/opt/pycharmcurl-L"https://download.jetbrains.com/product?code=PCC&latest&distribution=linux"\|tar-C/opt/pycharm--strip-components1-xzvf-# Make The idea.properties editable# If the user you use to start jupyter/jupyterlab/jupyter hub is named tiadenchowntiaden/opt/pycharm/bin/idea.properties# Create a symbolic link in PATH that points to the Intellij startup script.ln-s/opt/pycharm/bin/pycharm.sh/usr/bin/pycharmIDEs namesIntelliJ idea → ideaPycharm → pycharmDataGrip → datagripGoland → golandClion → clionPhpStorm → phpstormRubyMine → rubymineOnly when you are installing multiple editions of the same product (for example IntelliJ idea ultimate and IntelliJ idea educational at the same time), you need to be explicit about the name instead of using the generic name idea or pycharmIntellij idea ultimate → intellij-idea-ultimateIntelliJ community → intellij-idea-communityIntelliJ educational → intellij-idea-educationalPycharm professional → pycharm-professionalPycharm community → pycharm-communityPycharm educational → pycharm-educationalSupported Jetbrains IDEsIntelliJ idea (ultimate,community,educational)Pycharm (professional,community,educational)DataGripWebStormGolandClionPhpStormRubyMineInstallationPyPIThis repository can be installed directly from the Python Package Index.python-mpipinstalljupyter-projector-proxyIf you want to use this integration with JupyterLab®, ensure that you have JupyterLab installed on your machine by running the following command:python-mpipinstalljupyterlabYou should then installjupyterlab-server-proxyJupyterLab extension. To install the extension, use the following command:jupyterlabextensioninstall@jupyterlab/server-proxyBuilding From Sourcesgitclonehttps://github.com/tiaden/jupyter-projector-proxy.gitcdjupyter-projector-proxy

python-mpipinstall.UsageUpon successful installation ofjupyter-projector-proxy, your Jupyter environment should present options to launch your installed IDE.Open your Jupyter environment by starting jupyter notebook or lab# For Jupyter Notebookjupyternotebook# For Jupyter LabjupyterlabIf you are using Jupyter Notebook, on theNewmenu, select one of your installed IDEs . If you are using JupyterLab, select the installed IDE icon on the launcher.Integration with JupyterHubTo use this integration with JupyterHub®, you must install thejupyter-projector-proxyPython package in the Jupyter environment launched by your JupyterHub platform.For example, if your JupyterHub platform launches Docker containers, then install this package in the Docker image used to launch them.TroubleshootingIn the environment that you have installed the package:Verify if the projector executable is discoverable (i.e. if it is in the PATH)$whichprojector~/.local/bin/projectorVerify if the installed Jetbrains executable is discoverable (i.e. if it is in the PATH)$whichpycharm/usr/bin/pycharmCheck if their Python version is 3.8 or higher$python--version
Python3.8.10Verify that the user hasWritepermission on[IDE_HOME]/bin/idea.properties.
If you don't seePermissions Grantedafter executing the below command, you need to follow the
example above in order to modify the permissions of the user that runsjupyter/jupyterlab/jupyterhub# If you have installed pycharm like in the above example$[-w/opt/pycharm/bin/idea.properties]&&echo"Permissions Granted"Ensure thatjupyter-projector-proxyand thejupyterexecutables are in the same environment as the python executable.
For example if you are using VENV to manage your python environments:$whichpython/home/user/my-project/packages/.venv/bin/python

$whichjupyter-projector-proxy
/home/user/my-project/packages/.venv/bin/jupyter-projector-proxy

$whichjupyter
/home/user/my-project/packages/.venv/bin/jupyterNotice thatjupyter-projector-proxy,jupyterand thepythonexecutable are in the same parent directory, in this case it is:/home/user/my-project/packages/.venv/binEnsure that you are launchingjupyter notebookusing the same executable as listed above.Ensure that all two packages are installed in the same python environment# Pipe the output of pip freeze and grep for jupyter and jupyter-projector-proxy.# All two packages should be highlighted in the output.# If you don't see anyone of them, then either the packages missing in the output have been installed# in a different python environment or not installed at all.$pipfreeze|grep-E"jupyter|jupyter-projector-proxy"Ensure that all required system packages are installed for JetBrains-in-a-browser supportExample (ubuntu):# Pipe the output of apt and grep for the required system packages.# All required packages should be highlighted in the output.# If you don't see anyone of them, then the packages missing in the output have not been installed$aptlist--installed|grep-E"libxtst6|libxrender1|libfontconfig1|libxi6|libgtk-3-0"If the integration is not showing up as an option to the dropdown box in the Jupyter notebook:#Run the following commands and verify that you are able to see similar output:$jupyterserverextensionlist
configdir:/home/user/anaconda3/etc/jupyterjupyter_server_proxyenabled-Validating...jupyter_server_proxyOKjupyterlabenabled-Validating...jupyterlab2.2.6OK

$jupyternbextensionlist
Knownnbextensions:
configdir:/home/user/anaconda3/etc/jupyter/nbconfignotebooksectionjupyter-js-widgets/extensionenabled-Validating:OKtreesectionjupyter_server_proxy/treeenabled-Validating:OK$pipfreeze|grep-E"jupyter|jupyter-projector-proxy"# IF the server does not show up in the commands above, install:$pipinstalljupyter_contrib_nbextensionsFeedbackWe encourage you to try this repository with your environment and provide feedback.
If you encounter a technical issue or have an enhancement request, create an issuehere