6

I am stuck in a technical issue on a project and I think you the forum could help me out.

I have an EC2 Instance Type:p2.xlarge running on AWS, I cloned a repository in this instance which requires pytorch and cuda dependencies(this point has been taken care of).

Now, The issue is that I wanna work & run this code-base(which is is AWS instance now) somehow in my local pyCHARM IDE. In short, I didn't have proper resources on my laptop to run the repository, so I have to run in an AWS instance but for debugging purposes the local IDE would be a great option.

Is it possible to do that?. In other words, we can do SSH into AWS instance and run code, but all will be done through command line, if we could SSH through PYCHARM and can see the code in AWS here in local machine within PYCHARM and change, debug or run it as it was local but actually it gets executed in the instance.

Please suggest a solution to it. Thanks in advance.

EDIT-1:

After following, @Cromulent suggestion, I have arrived here Setting the remote:

enter image description here

Upload happening within the local & remote repo. enter image description here

I still didn't understand the requirement of syncing the local and remote folders, when I only want to open the remote folder in my PYCHARM IDE and work on it.

I think after this setup, I have to change the code in local copy and the PYCHARM will sync the code in remote copy. How will I be running(using resources-GPUs of the remote Instance, not my local machine.) the remote code in PYCHARM in this scenario, I am just syncing it, for running again I have to ssh through command line and run the script(This does not serve the purpose)?

EDIT-2: After @Cromulent suggestions.

Actually, it did work, but still, I am not able to run the remote code locally. I am getting the below error while running any remote script. If I run the same script using ssh in the terminal, the scripts run normally. I tried to fix the problem using this post on StackOverflow, but it didn't work too.

ssh://ubuntu@ec2-52-41-247-169.us-west-2.compute.amazonaws.com:22/home/ubuntu/anaconda3/bin/python -u <08ad9807-3477-4916-96ce-ba6155e3ff4c>/home/ubuntu/InsightProject/scripts/download_flownet2.py
/home/ubuntu/anaconda3/bin/python: can't open file '<08ad9807-3477-4916-96ce-ba6155e3ff4c>/home/ubuntu/InsightProject/scripts/download_flownet2.py': [Errno 2] No such file or directory

The below is the screenshot for the above problem: enter image description here

Anu
  • 3,198
  • 5
  • 28
  • 49
  • [This is the corresponding feature request for PyCharm.](https://youtrack.jetbrains.com/issue/PY-19752) Please vote for it. – Albert Mar 20 '20 at 10:31

3 Answers3

4

PyCharm Professional supports remote Python interpreters (either the globally installed Python interpreter or a virtualenv). It works by creating an SSH connection to the server and then running the code on the remote host. The results are then displayed locally in PyCharm Professional. You can also do remote debugging as well.

You MUST be using the professional version of PyCharm though. The free community version does not support this feature.

You can find the documentation here:

https://www.jetbrains.com/help/pycharm/configuring-remote-interpreters-via-ssh.html

Cromulent
  • 3,788
  • 4
  • 31
  • 41
  • 1
    You can get one-year free Pycharm Professional if you are a student or a teacher employed in any institution. – Arun T Sep 15 '18 at 08:39
  • 1
    Thank you @Cromulent, The issue is it creates a local copy of the remote repo(on AWS instance). I followed the procedure given in the above link. But, I didn't understand the need of creating a reference from local folder to remote folder? Later it also syncs the 2 local & remote folder? I am still confused on How I will run the remote code in my local PYCHARM IDE. I have updated my post with few screenshots to assess more on my question. – Anu Sep 16 '18 at 01:03
1

One more solution is to deploy a Jupyter Notebook on your remote server. Then you will be able to use it from PyCharm Professional Edition.

Don't forget to make rules for the jupyter ports (e.g. allow all 8888) in your AWS console and in your instance.

To configure a remote interpreter for your notebook do this (source):

  1. Open the Jupyter Notebook page of the Settings/Preferences dialog.

  2. On this page, select or clear the Markdown cells rendering enabled option, and specify the username and password. Note that for the single-user notebooks these fields are optional - leave them blank.

  3. Fill in the username (for JupyterHub) and password.

  4. Click the link Configure remote interpreter. You'll find yourself at the Project Interpreter page.

  5. Configure the remote interpreter, as described in the section Configuring Python Interpreter.

You will want to configure a remote interpreter.

0

I tried the above approach but it didn't work for me. I have edited my post so that I can get additional input from the community, but I didn't any after the first answer was posted.

My friend actually figured out a secondary way to fix the issue. He actually uses "NOMACHINE" on the local machine and open connection to the remote desktop. Then you can directly install PYCHARM in the remote machine and work in there. I hope this will help others.

The solution is in his blog post. (Thanks to Shaobo Guan)

Another solution would be to use VNC instead of NoMachine

Anu
  • 3,198
  • 5
  • 28
  • 49