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
Tools->Vagrant->Up
Tools->Start SSH Session
. SelectVagrant at [VagrantFolder]
from the list that appears.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.Vagrant
. YourVagrant 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.up
in order for this to work.Configure Your Project to Use the Correct Interpreter
Run
menu, selectEdit Configurations
Django Server
Host
to0.0.0.0
. This will bind therunserver
command to an external IP.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 port8080
to Vagrant's8000
, I'd usehttp://127.0.0.1:8080/
)Python interpreter
that you set up in the above section from thePython interpreter
dropdownpath mappings
(this is sometimes optional, depending on where your VagrantFile is stored).Run your project, and enjoy the glory that is Vagrant.