Have you ever wanted to develop a Python or Web application for Linux from your laptop running Windows 7 or MAC OS X? To debug or test your application on different operating systems without ever leaving the IDE? Or just to run large applications that you develop as a team on a dedicated provisioned environment, rather than on regular workstations? Guess what: all of this is possible with the remote development features already available in PyCharm.
The central entry point to remote development with PyCharm is the notion of Remote Interpreters.
You can configure PyCharm to use Python interpreter from a remote host and set it as your project interpreter. Then you can configure your run/debug configurations to run, debug or test your applications on the remote host. The remote host can be a physical remote server, a VM or even a virtualenv environment – it doesn’t matter. PyCharm has everything you need to work with all types of remote hosts.
Actually, most of the Remote Development stuff was already available in previous versions of PyCharm and covered in these nice tutorials. But we never stop working on improving your comfort and user experience, so PyCharm 2.7 gets new additional features.
Vagrant integration
Native Vagrant integration is now implemented in PyCharm 2.7+. It is supported via the plugin Vagrant that comes already bundled with PyCharm. Vagrant integration makes it much easier to provision and manage your VMs, connect to them over the SSH and automatically configure a remote interpreter and an FTP deployment, if you run your development environment in a VM using Vagrant. All this without leaving the IDE!
Before you start working with Vagrant, make sure that the Vagrant plugin is enabled (this is the default). Also make sure that Oracle VirtualBox and Vagrant are installed on your machine.
First, open Settings | Project Settings | Vagrant:
Enter appropriate paths for “Vagrant executable” and “Instance folder,” and then add your first Vagrant Box by clicking the Add (green plus) button:
Here, choose a name for your new Vagrant box and provide the Box URL for downloading the template. Click OK to start downloading your VM.
Good! Now, after this step we have VM downloaded and added to our environment:
Next, open Tools | Vagrant. You will see the Vagrant menu node containing different commands, which correspond to the standard Vagrant actions:
First you need to initialize a Vagrantfile for your project. Select “Init in Project Root” in the menu to automatically create the Vagrantfile, and you will be able to see and modify it like any other file within your project.
Now you can start your first VM! To do so, select Tools | Vagrant | Up.
On the bottom of the screen a special console will open showing you the progress and output from Vagrant:
To be able to run your project on the VM or to connect to the VM, you need to configure the remote interpreter.
This is done through Settings | Project Settings | Project Interpreter | Python Interpreters. Click the Add button and select “Remote interpreter.” Here you will get the “Configure Remote Python Interpreter” dialog:
You can fill it manually, as for an arbitrary remote host, or just use “Fill from Vagrant config.” Click it – and voila! All the required fields are filled with your Vagrant box details.
After this step the remote interpreter will be added to your project. You can set it as the default project interpreter as well.
From this point on you can execute your project using the remote interpreter on the VM:
The Vagrant plugin works gracefully with the Vagrantfile. You can manually edit it, and all you need is just to click Tools | Vagrant | Reload for the Vagrant plugin to pick up new settings.
For example you can set up custom path mappings in Vagrantfile:
After the Vagrant Box is reloaded, a mapping will be created and you will see a new shared folder into your project folder.
Integrated SSH console
One of the coolest and most useful features is that you can log in to your remote host via SSH and work in its console without leaving PyCharm. To do that, just select Tools | Run SSH Terminal. A console opens on the bottom with the prompt:
Feel free to discover its usability. You can even launch Vim in it:
As you can see, PyCharm comes with everything but the kitchen sink! So we really hope you’ll enjoy these new enhancements and feel comfortable developing your applications on remote environments. And as always, please report your issues or feature requests to our YouTrack bug-tracker.
Develop with Pleasure!
PyCharm team
Could vagrant box be started automatically when I open PyCharm project using it?
Right now I open my project and PyCharm complains that it cannot connect to remote interpreter.
Hi! Not yet, but that is planned to be in the next version http://youtrack.jetbrains.com/issue/PY-8751
If you want Vagrant support in PhpStorm vote for the issue here:
http://youtrack.jetbrains.com/issue/WI-15874
Does PyCharm include auto completes for JavaScript ?
It does.
Too bad the console is still unable to intercept CTRL+C and the like…
FWIW remote development (and debugging) is the killer feature for me, and the main reason I am lobbying my boss to buy a commercial license and will buy a personal one myself if he says no. The way it figures out what libraries are installed remotely and installs its own helper code is very slick.
However, couple of things I’m struggling with:
Tools : Run Python Console does not seem to set up the path correctly (it uses the local path, not the remote one). And the Traceback after a run is not highlighted with links as I would expect. Possibly this is because the remote file paths are not recognised. Am I missing some trick?
Rob, could you please file YouTrack issues at http://youtrack.jetbrains.com/ for the problems you’ve encountered? Thanks!
Can we get syntax highlighting for Vagrantfile in PyCharm? Or do we have to get IntelliJ or RubyMine to be able to edit these files without headaches?
Right now I feel like I’ll be better off editing in an external application, which seems weird when you’ve gone through all the trouble of integrating Vagrant in the first place.
Don’t misunderstand me, I love PyCharm.
Vagrantfile is a Ruby file, so it would be difficult for us to provide syntax highlighting for Vagrantfile without providing general Ruby syntax highlighting. And we have obvious business reasons for not including Ruby support in a Python IDE.
One possible option is to install a TextMate bundle for Ruby and to use it for highlighting the Vagrantfile.
It’s time for _next_pyCharm_version_ roadmap! )))
Yeah, it will be available soon)
Hey all,
I’m new to this and this and all of this looks very interesting, but my final goal with all this is to have a following set up:
1. Pycharm on my windows box
2. Fire up Vagrant with python, postgresql and django inside my project
3. Do remote debugging of my vagrant box through my pycharm by clicking debug. I think all the pieces are here, but i can’t seem to connect the dots. The goal is to not have minimum python-related stuff on my windows box but still be able to do editing through pycharm.
Usually I don’t read post on blogs, but I wish to say that this write-up very forced me to try and do so! Your writing style has been amazed me. Thanks, very nice post. hotelem. http://www.eurolider.pl/index.php?option=com_content&view=article&id=62%3Ammp&catid=5%3Agaleria&Itemid=16&lang=pl