I have set up already my configuration so that it will run the server remotely. When I click run, I see the command used:
ssh://vagrant@localhost:2222/usr/bin/python -u "C:/Users/MyName/ProjectName/config/manage.py" runserver localhost:8080
(I've replaced the directory names for anonymity reasons).
When I do run this, It fails (obviously) because it's using a windows path to my manage.py
Specifically the error I get is
`/usr/bin/python: can't open file 'C:/Users/MyName/judgeapps/config/manage.py': [Errno 2] No such file or directory
What I can't figure out after extensive googling, is how to force django to use a path on my vagrant machine. How can I go about doing this?
The trick is creating a Python interpreter in PyCharm, and configuring the project to use this interpreter.
Note: The following applies to PyCharm Professional 4.0.
Create a Python Interpreter for Vagrant
- Start your Vagrant machine from PyCharm by navigating to
Tools->Vagrant->Up
- SSH into your Vagrant box:
Tools->Start SSH Session
. Select Vagrant at [VagrantFolder]
from the list that appears.
- From the terminal that appears, run
which python
. This will give you an absolute path to python on your virtual machine.
File->Settings->Project->Project Interpreter
. Click the + button to create a new one.
- Choose
Vagrant
. Your Vagrant instance folder
should be the location of your VagrantFile on your host machine. Python interpreter path
should be set to the absolute path you found in step 3 above.
- Click OK to save. Note: Vagrant has to be
up
in order for this to work.
Configure Your Project to Use the Correct Interpreter
- From the
Run
menu, select Edit Configurations
- Click + and add a new
Django Server
- Set your
Host
to 0.0.0.0
. This will bind the runserver
command to an external IP.
- Check
Run browser
and set the URL to the host/port you mapped to your VM in your VagrantFile (for example, if I map my host's port 8080
to Vagrant's 8000
, I'd use http://127.0.0.1:8080/
)
- Choose the
Python interpreter
that you set up in the above section from the Python interpreter
dropdown
- Add your absolute
path mappings
(this is sometimes optional, depending on where your VagrantFile is stored).
- Click OK to save.
Run your project, and enjoy the glory that is Vagrant.