2021-11-04 16:27:37 +01:00
← [[doom-module-index: ][Back to module index ]] ! [[doom-module-issues:::lang python ][Issues ]] ↖ [[doom-source:modules/lang/python/ ][Github ]] ± [[doom-suggest-edit: ][Suggest edits ]] ? [[doom-help-modules: ][Help ]]
2021-10-16 01:28:32 +02:00
--------------------------------------------------------------------------------
#+TITLE : :lang python
#+SUBTITLE : Beautiful is better than ugly
#+CREATED : June 15, 2015
#+SINCE : 0.7
* Description :unfold:
This module adds [[https://www.python.org/ ][Python ]] support to Doom Emacs.
- Syntax checking ([[doom-package: ][flycheck ]])
- Snippets
- Run tests ([[doom-package: ][nose ]], [[doom-package: ][pytest ]])
- Auto-format (with ~black~ , requires [[doom-module: ][:editor format ]])
- LSP integration (=mspyls= , =pyls= , or =pyright= )
** Maintainers
- [[doom-user: ][@hlissner ]]
[[doom-contrib-maintainer: ][Become a maintainer? ]]
** Module flags
- +conda ::
Enable python virtual environment support via [[https://conda.io/en/latest/ ][Conda ]].
- +cython ::
Enable support for Cython files support.
- +lsp ::
Enable LSP support for ~python-mode~ . Requires [[doom-module: ][:tools lsp ]] and a langserver
(supports mspyls, pyls, and pyright).
- +poetry ::
Enable Python packaging, dependency management, and virtual environment
support via [[https://python-poetry.org/ ][Poetry ]].
- +pyenv ::
Enable Python virtual environment support via [[https://github.com/pyenv/pyenv ][pyenv ]]
- +pyright ::
Use the pyright LSP server instead of mspyls or pyls (requires [[doom-module: ][+lsp ]]).
** Packages
- [[doom-package: ][anaconda-mode ]]
- [[doom-package: ][conda ]]
- [[doom-package: ][nose ]]
- [[doom-package: ][pipenv ]]
- [[doom-package: ][pip-requirements ]]
- [[doom-package: ][poetry ]] if [[doom-module: ][+poetry ]]
- [[doom-package: ][pyenv ]]
- [[doom-package: ][pyimport ]]
- [[doom-package: ][py-isort ]]
- [[doom-package: ][python-pytest ]]
- if [[doom-module: ][+cython ]]
- [[doom-package: ][cython-mode ]]
- [[doom-package: ][flycheck-cython ]] if [[doom-module: ][:checkers syntax ]]
- if [[doom-module: ][+lsp ]]
- if [[doom-module: ][+pyright ]]
- [[doom-package: ][lsp-pyright ]]
- else
- [[doom-package: ][lsp-python-ms ]]
** Hacks
- [[doom-package: ][anaconda-mode ]] is configured to activate when [[doom-package: ][lsp-mode ]] (or [[doom-package: ][eglot ]]) don't -- or
fail to.
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338 ][Enable this module in your ~doom!~ block. ]]
This module has no hard requirements, but softly depends on:
- For this module's supported test runners:
- ~$ pip install pytest~
- ~$ pip install nose~
- The [[doom-module: ][:editor format ]] module uses Black for python files: ~$ pip install black~
- [[doom-package: ][pyimport ]] requires Python's module ~pyflakes~ : ~$ pip install pyflakes~
- [[doom-package: ][py-isort ]] requires [[https://github.com/timothycrosley/isort ][isort ]] to be installed: ~pip install isort~
- Python virtual environments install instructions at:
- [[https://github.com/pyenv/pyenv ][pyenv ]]
- [[https://conda.io/en/latest/ ][Conda ]]
- [[https://python-poetry.org/ ][Poetry ]]
- [[https://pipenv.readthedocs.io/en/latest/ ][pipenv ]]
- ~cython~ requires [[https://cython.org/ ][Cython ]]
2019-10-15 10:00:56 +02:00
2019-10-03 12:40:46 -04:00
** Language Server Protocol Support
2021-10-16 01:28:32 +02:00
For LSP support the [[doom-module: ][:tools lsp ]] module must be enabled, along with this module's
[[doom-module: ][+lsp ]] flag. By default, it supports [[doom-package: ][mspyls ]] and [[doom-package: ][pyls ]], in that order. With the
[[doom-module: ][+pyright ]] flag, it will try Pyright first.
2020-05-09 01:13:04 -04:00
2020-08-07 19:04:41 -04:00
Each of these servers must be installed on your system via your OS package
manager or manually:
2021-10-16 01:28:32 +02:00
- [[https://pypi.org/project/python-language-server/ ][*pyls* ]] can be installed with ~$ pip install python-language-server[all]~ .
- *mspyls* can be installed by typing ~M-x lsp-install-server RET mspyls~ .
- *pyright* can be installed with ~$ pip install pyright~ or ~$ npm i -g
pyright~.
2020-05-09 01:13:04 -04:00
2021-10-16 01:28:32 +02:00
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module: ][Complete it? ]]
#+end_quote
2020-07-25 10:15:00 -07:00
2021-10-16 01:28:32 +02:00
This module supports LSP. It requires installation of [[https://pypi.org/project/python-language-server/ ][Python Language Server ]],
[[https://github.com/Microsoft/python-language-server ][Microsoft Language Server ]], or [[https://github.com/microsoft/pyright ][pyright ]], see [[Language Server Protocol Support ][LSP Support ]].
2019-10-03 12:40:46 -04:00
2021-10-16 01:28:32 +02:00
To enable support for auto-formatting with black enable [[doom-module: ][:editor format ]].
2019-10-03 12:40:46 -04:00
** Keybindings
2021-10-16 01:28:32 +02:00
| Binding | Description |
|-------------------+----------------------------------|
| [[kbd:][<localleader> c c]] | ~Compile Cython buffer~ |
| [[kbd:][<localleader> i i]] | ~Insert mising imports~ |
| [[kbd:][<localleader> i r]] | ~Remove unused imports~ |
| [[kbd:][<localleader> i s]] | ~Sort imports~ |
| [[kbd:][<localleader> i o]] | ~Optimize imports~ |
| [[kbd:][<localleader> t r]] | ~nosetests-again~ |
| [[kbd:][<localleader> t a]] | ~nosetests-all~ |
| [[kbd:][<localleader> t s]] | ~nosetests-one~ |
| [[kbd:][<localleader> t v]] | ~nosetests-module~ |
| [[kbd:][<localleader> t A]] | ~nosetests-pdb-all~ |
| [[kbd:][<localleader> t O]] | ~nosetests-pdb-one~ |
| [[kbd:][<localleader> t V]] | ~nosetests-pdb-module~ |
| [[kbd:][<localleader> t f]] | ~python-pytest-file~ |
| [[kbd:][<localleader> t k]] | ~python-pytest-file-dwim~ |
| [[kbd:][<localleader> t t]] | ~python-pytest-function~ |
| [[kbd:][<localleader> t m]] | ~python-pytest-function-dwim~ |
| [[kbd:][<localleader> t r]] | ~python-pytest-repeat~ |
| [[kbd:][<localleader> t p]] | ~python-pytest-popup~ |
| [[kbd:][<localleader> g d]] | ~anaconda-mode-find-definitions~ |
| [[kbd:][<localleader> g h]] | ~anaconda-mode-show-doc~ |
| [[kbd:][<localleader> g a]] | ~anaconda-mode-find-assignments~ |
| [[kbd:][<localleader> g f]] | ~anaconda-mode-find-file~ |
| [[kbd:][<localleader> g u]] | ~anaconda-mode-find-references~ |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module: ][Complete it? ]]
#+end_quote
2019-10-03 12:40:46 -04:00
This module has the following variables to set extra arguments to [[https://ipython.org/ ][ipython ]] and
[[https://jupyter.org/ ][jupyter ]] shells:
2021-10-16 01:28:32 +02:00
#+begin_src emacs-lisp
;; in $DOOMDIR/config.el
2019-10-03 12:40:46 -04:00
(setq +python-ipython-repl-args '("-i" "--simple-prompt" "--no-color-info"))
(setq +python-jupyter-repl-args '("--simple-prompt"))
2021-10-16 01:28:32 +02:00
#+end_src
* Troubleshooting
/There are no known problems with this module./ [[doom-report: ][Report one? ]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq: ][Ask one? ]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module: ][Write one? ]]
#+end_quote