Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how can I enable x-11 forwarding in pycharm? when connecting to vagrant or a remote ssh?

I am using pycharm in windows but the python backend need to be running on unix so I host the python app/code in ubuntu with vagrant, however I need to do some plotting as well, is there a way I can enable matplotlab plotting in pycharm with vagrant? thanks

like image 540
John Avatar asked Jun 12 '15 23:06

John


2 Answers

Try to set DISPLAY environment variable in PyCharm run configuration like this:

DISPLAY=localhost:10.0

I got my display value from vagrant ssh connection

vagrant@vagrant:$ echo $DISPLAY
localhost:10.0
like image 72
Dmitriy Avatar answered Sep 21 '22 11:09

Dmitriy


In case anyone stumbles upon the same issue.. There are several ways for you to enable X11 through PyCharm.

The solution for me was to create a terminal session using the -Y flag (or -X), e.g.:

ssh -X user@ip

or

ssh -Y user@ip

The -Y worked for me as it enables trusted X11 forwarding, which are not subjected to X11 Security extension controls (ssh man page)

You also need to export DISPLAY variable just like user138180 said

For me the matplotlib backend that worked was "tkagg". See matplotlib faq for more info.


My remote machine is a centos 7. My local machine is running Manjaro.

A workaround to having the terminal session opened is to follow what Tarun said here.


As an example, (thanks, user138180), you could use this code to test if it works:

import matplotlib matplotlib.use('TkAgg')
import matplotlib.pyplot as plt plt.interactive(False)

plt.hist(np.random.randn(100))
plt.show()
like image 24
Vicente Rocha Avatar answered Sep 22 '22 11:09

Vicente Rocha