spacemacs/contrib/!lang/python
Tu Do 7f90d99a48 Fix Python and Semantic integration
When no Python executable is detected, Semantic causes an error that it cannot
retrieve include paths from the executable, causing an error that prevents
Python buffer to be switched and error is repeatedly reported whenever a Python
buffer is opened. This commit ignores the error from
semantic-python-get-system-include-path that is called when Semantic setup
itself for a Python buffer.
2015-05-27 23:50:58 -04:00
..
extensions Prefix categories with ! 2015-05-25 00:50:38 -04:00
img Prefix categories with ! 2015-05-25 00:50:38 -04:00
config.el Enable company in Python REPL for code completion 2015-05-25 23:39:05 -04:00
extensions.el Prefix categories with ! 2015-05-25 00:50:38 -04:00
funcs.el Prefix categories with ! 2015-05-25 00:50:38 -04:00
packages.el Fix Python and Semantic integration 2015-05-27 23:50:58 -04:00
README.md Prefix categories with ! 2015-05-25 00:50:38 -04:00

Python contribution layer for Spacemacs

logo_python logo_django

Table of Contents

Description

This layer adds support for the Python language.

Features:

Install

Layer

To use this contribution add it to your ~/.spacemacs

(setq-default dotspacemacs-configuration-layers '(python))

Anaconda dependencies

anaconda-mode tries to install the dependencies itself but sometimes it does not work and you may encounter the following message when opening a python buffer:

Blocking call to accept-process-output with quit inhibited!!

To fix this, install the anaconda-mode dependencies by hand:

pip install  jedi==0.8.1 json-rpc==1.8.1 service_factory==0.1.2

Source: https://github.com/proofit404/anaconda-mode#issues

Automatic buffer formatting on save

To enable automatic buffer formatting on save with YAPF set the variable python-enable-yapf-format-on-save to t.

(setq-default dotspacemacs-configuration-layers '(
  (python :variables python-enable-yapf-format-on-save t)))

autoflake

To be able to suppress unused imports easily, install autoflake:

pip install autoflake

Key Bindings

Inferior REPL process

Start a Python or iPython inferior REPL process with SPC m s i. If ipython is available in system executable search paths, ipython will be used to launch python shell; otherwise, default python interpreter will be used. You may change your system executable search path by activating a virtual environment.

Send code to inferior process commands:

Key Binding       |                 Description

----------------------|------------------------------------------------------------ SPC m s b | send buffer and keep code buffer focused SPC m s B | send buffer and switch to REPL in insert mode SPC m s f | send function and keep code buffer focused SPC m s F | send function and switch to REPL in insert mode SPC m s i | start inferior REPL process SPC m s r | send region and keep code buffer focused SPC m s R | send region and switch to REPL in insert mode CTRL+j | next item in REPL history CTRL+k | previous item in REPL history

Running Python Script in shell

To run a Python script like you would in the shell press SPC m c c to start the Python script in comint mode. This is useful when working with multiple Python files since the REPL does not reload changes made in other modules.

Key Binding       |                 Description

----------------------|------------------------------------------------------------ SPC m c c | Execute current file in a comint shell SPC m c C | Execute current file in a comint shell and switch to it in insert state

Note With the universal argument SPC u you can enter a new compilation command.

Testing in Python

Spacemacs uses nose as a test runner. An improved version of nose.el is shipped with Spacemacs, this version adds:

  • windows support
  • test suite support

The root of the project is detected with a .git directory or a setup.cfg file.

Test commands (start with m t or m T):

No Debug         |                 Description

---------------------|------------------------------------------------------------ SPC m t a | launch all tests of the project SPC m t b | launch all tests of the current buffer (same as module) SPC m t m | launch all tests of the current module SPC m t s | launch all tests of the current suite SPC m t t | launch the current test (function)

 Debug           |                 Description

---------------------|------------------------------------------------------------ SPC m T a | launch all tests of the project in debug mode SPC m T b | launch all tests of the current buffer (module) in debug mode SPC m T m | launch all tests of the current module in debug mode SPC m T s | launch all tests of the current suite in debug mode SPC m T t | launch the current test (function) in debug mode

Refactoring

Key Binding       |                 Description

----------------------|------------------------------------------------------------ SPC m r i | remove unused imports with autoflake

Other Python commands

Key Binding       |                 Description

----------------------|------------------------------------------------------------ SPC m = | Reformat the buffer according to PEP8 using YAPF SPC m d b | toggle a breakpoint SPC m g g | go to definition using anaconda-mode-goto (C-o to jump back) SPC m h d | look for documentation using helm-pydoc SPC m h h | quick documentation using anaconda SPC m h H | open documentation in firefox using pylookup SPC m v | activate a virtual environment with pyenv SPC m V | activate a virtual environment with pyvenv

Django

Django related key bindings uses pony-mode and are behind the prefix SPC m j.

Configuration options for pony-mode are documented at deadpansincerity.com

Manage Django with SPC m j m.

Fabric

Key Binding       |                 Description

----------------------|------------------------------------------------------------ mjaf | Run a fabric command mjad | Deploy project with fab deploy

Files

Key Binding       |                 Description

----------------------|------------------------------------------------------------ mjfs | Open the settings.py for this project mjfc | Interactively display a setting value in the minibuffer mjft | Jump to template at point mjfr | Jump to the view file that the URL resolves to (experimental)

Interactive

Key Binding       |                 Description

----------------------|------------------------------------------------------------ mjid | Run interpreter for this project's default database as an inferior process mjis | Open a Python shell with the current pony project's context loaded. If the project has the django_extras package installed, then use the excellent shell_plus command. Otherwise, fall back to manage.py shell

Server

Key Binding       |                 Description

----------------------|------------------------------------------------------------ mjrd | Stop the dev server mjro | Open a tab at the dev server mjrr | Restart the dev server (works better with django_extras/werkzeug) mjru | Start or open the dev server mjrt | Open a second server with a "throwaway" host/port

South/Syncdb

Key Binding       |                 Description

----------------------|------------------------------------------------------------ mjsc | Convert an existing app to south mjsh | Create migration for modification mjsi | Run the initial south migration for an app mjsm | Migrate an app mjss | Run syncdb on the current project

Test

Key Binding       |                 Description

----------------------|------------------------------------------------------------ mjtd | Move down the traceback one level mjte | Go to the file and line of the last stack trace in a test buffer mjto | Open the file in a traceback at the line specified mjtt | Run the test(s) given by command mjtu | Move up the traceback one level