(defun django-shell ()
(interactive)
(let ((python-shell-interpreter (read-file-name "Locate manage.py "))
(python-shell-interpreter-args "shell"))
(run-python (python-shell-calculate-command) nil t)))
I was looking for an easy way to access the Django shell in Emacs. Previously, I used ansi-term and just ran ./manage.py shell like normal. The big problem with this method was that I didn’t get all of the awesome code-completion and similar features that I would get from the run-python shell.
This elisp function prompts the user to locate their manage.py file. It then temporarily sets the “python shell interpreter” to manage.py and adds “shell” to the argument of manage.py. run-python is called. It uses python-shell-calculate-command that basically pieces together the interpreter and args variable we set earlier.
Notes:
pyvenv-activate command for activating virtualenvs.pip install 'python-language-server[all]'. If you’re using a virtualenv, make sure to install this in your virtualenv as well. Btw, those single quotes are important in that pip install command.
Leave a comment