Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python plotting on remote server using PyCharm

I have started to learn Python and so far my setup has been following - Python 3.5 installation on Win10 64bit local machine with PyCharm as a great IDE. Everything works, matplotlib charts and other visual outputs display fine, debugging works, etc.

Now, I have came across some libraries which works only on Linux. I have set up Ubuntu 16.4 64bit VPS on Digital Ocean, installed Python 3.5. In PyCharm I have set up SFTP connection to remote host. Code running works, debugging works, however, I am not able to bring display output (matplotlib plots,...) to local (Win10) machine. As I am not at all familiar with Linux GUI environments (X11?), after googling I have following questions:

1) Should anything be installed on remote Linux machine? (e.g. x11 client/server/smth?)

2) Should anything be installed on local Win machine? (e.g. Xming?)

3) Should anything be configured on remote Linx machine? (e.g. X11 forwarding)

4) Should anything be configured on local Win machine PyCharm?

5) There are X11 forwarding settings in Putty and some have suggested to use those but I am not sure, should Putty session run in paraller with PyCharm and can that be avoided.

Thanks a lot!

PS - I have installed Jupyter Notebook (and latest Jupyter Lab) on remote machine and it works excellent, however I am still prefering PyCharm as primary IDE with better code completion, debugger and other perks.

like image 453
Andis Avatar asked Oct 01 '16 05:10

Andis


People also ask

Can PyCharm connect to remote server?

On the PyCharm welcome screen, select Remote Development. In the Run the IDE Remotely section, click SSH Connection. If you have the IDE already running on the remote server and you have a connection link, you can use the Connect to Remote Host With a Link section.

Does PyCharm Community Edition support remote development?

Yes, you can. However, it still downloads JetBrains Client. All functionality which comes along with the JetBrains Gateway is available in PyCharm.


1 Answers

Ok, after some more googling I finally managed to get this process working, hope it helps somebody:

1) on remote host (VPS, Ubuntu 16.04) I had to install X11 server, which I did by:

sudo apt-get install xorg
sudo apt-get install openbox

2) On remote host I had to make sure that X11Forwarding is enabled in /etc/ssh/sshd_config

3) On local Win10 machine I had to install Xming server and launch it with default settings.

4) On local Win10 machine I had to configure Putty to use X11 forwarding (Connection-> SSH -> X11 Forwarding) with default settings and keep connection open while running PyCharm (it seems there is no option in PyCharm to enable x11 forwarding, so putty must be running in the background)

5) On remote machine I had to check Display number (echo $DISPLAY) - this can be different for everyone. For me it was localhost:10.0

6) In PyCharm Run configuration -> Environment variables I had to add DISPLAY=localhost:10.0

After all these steps and Putty+Xming running in backgroud, I was able to execute remote code and bring graphic back to my Windows 10 PC!

PS - process is actually slow, I have to wait around 10 seconds before image is brought back to me. I am not sure why or how to speed it up. Might be another question. (reducing chipher strength and enabling compression does not help. It seems some sort of initialization problem with x11 remote and local)

like image 52
Andis Avatar answered Sep 22 '22 18:09

Andis