{"id":13646553,"url":"https://github.com/pythonic-emacs/anaconda-mode","last_synced_at":"2026-03-12T11:30:57.165Z","repository":{"id":11950792,"uuid":"14521412","full_name":"pythonic-emacs/anaconda-mode","owner":"pythonic-emacs","description":"Code navigation, documentation lookup and completion for Python.","archived":false,"fork":false,"pushed_at":"2025-03-10T15:12:27.000Z","size":1630,"stargazers_count":712,"open_issues_count":35,"forks_count":87,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-03-10T16:36:57.905Z","etag":null,"topics":["devtools","emacs","python"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pythonic-emacs.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-11-19T10:37:07.000Z","updated_at":"2025-03-10T15:12:31.000Z","dependencies_parsed_at":"2023-11-24T09:29:32.531Z","dependency_job_id":"118ffd6d-936c-4b6d-a480-c1ca0f98626f","html_url":"https://github.com/pythonic-emacs/anaconda-mode","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonic-emacs%2Fanaconda-mode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonic-emacs%2Fanaconda-mode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonic-emacs%2Fanaconda-mode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythonic-emacs%2Fanaconda-mode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pythonic-emacs","download_url":"https://codeload.github.com/pythonic-emacs/anaconda-mode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250136650,"owners_count":21380871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devtools","emacs","python"],"created_at":"2024-08-02T01:02:58.943Z","updated_at":"2025-12-16T22:14:42.391Z","avatar_url":"https://github.com/pythonic-emacs.png","language":"Emacs Lisp","readme":"# \u003cimg align=\"right\" src=\"static/logo.png\"\u003e Anaconda mode [![MELPA](https://melpa.org/packages/anaconda-mode-badge.svg)](https://melpa.org/#/anaconda-mode) [![MELPA Stable](https://stable.melpa.org/packages/anaconda-mode-badge.svg)](https://stable.melpa.org/#/anaconda-mode)\n\n[![CI](https://github.com/pythonic-emacs/anaconda-mode/actions/workflows/test.yml/badge.svg)](https://github.com/pythonic-emacs/anaconda-mode/actions/workflows/test.yml)\n\nCode navigation, documentation lookup and completion for Python.\n\n![Completion screenshot](static/completion.png)\n\n![Reference search screenshot](static/reference.png)\n\n## Features\n\nAnaconda mode provides the following features\n\n* context-sensitive code completion\n* jump to definitions\n* find references\n* view documentation\n* virtual environment\n* eldoc mode\n* all this stuff inside vagrant, docker and remote hosts\n\n## Supported Python Versions\n\n2.7, 3.4 - 3.13\n\n## Installation\n\nTo use this package you need to install `setuptools`.\n\n#### package.el\n\nAll you need to do is install the package from\n[Melpa](https://melpa.org/)\n\n    M-x package-install RET anaconda-mode RET\n\n#### Manual\n\nClone this repository somewhere and add this directory to your\n`load-path`.\n\n#### Prelude\n\n`anaconda-mode` is included in the [Emacs\nPrelude](https://github.com/bbatsov/prelude) distribution.  You can\nuse it as well.  Look at the `prelude-python` module to see more\ndetails.\n\n#### Spacemacs\n\n`anaconda-mode` is included in the\n[Spacemacs](https://github.com/syl20bnr/spacemacs) distribution.  You\ncan use it as well.  Look at the [python](https://develop.spacemacs.org/layers/+lang/python/README.html) language layer to see more\ndetails.\n\n## Configuration\n\nYou can automatically enable `anaconda-mode` in all python buffers\nwith following code in your configuration:\n\n```lisp\n(add-hook 'python-mode-hook 'anaconda-mode)\n```\n\n#### ElDoc\n\n`anaconda-eldoc-mode` provide document function to `eldoc-mode` so\nwhen your point is between the parenthesis of a function call, its\nparameters are shown in the echo area. All You need is to enable\n`anaconda-eldoc-mode` in addition to the previous setup.\n\n```lisp\n(add-hook 'python-mode-hook 'anaconda-eldoc-mode)\n```\n\n## Usage\n\nTo start a completion press `C-M-i`.  This is the standard emacs\nbinding for `complete-at-point` function.  You can use\n[company-mode](http://company-mode.github.io/) with\n[company-anaconda](https://github.com/proofit404/company-anaconda)\nbackend to get more intelligent UI.\n\n#### Interactive commands\n\nHere is a list of interactive commands available with anaconda-mode\n\n|Keybinding  | Description                                 |\n|------------|---------------------------------------------|\n| C-M-i      | anaconda-mode-complete                      |\n| M-.        | anaconda-mode-find-definitions              |\n| C-x 4 .    | anaconda-mode-find-definitions-other-window |\n| C-x 5 .    | anaconda-mode-find-definitions-other-frame  |\n| M-=        | anaconda-mode-find-assignments              |\n| C-x 4 =    | anaconda-mode-find-assignments-other-window |\n| C-x 5 =    | anaconda-mode-find-assignments-other-frame  |\n| M-r        | anaconda-mode-find-references               |\n| C-x 4 r    | anaconda-mode-find-references-other-window  |\n| C-x 5 r    | anaconda-mode-find-references-other-frame   |\n| M-,        | xref-pop-marker-stack                       |\n| M-?        | anaconda-mode-show-doc                      |\n\nIf multiple candidates are found for definitions, assignments or\nusages, you'll see an advanced anaconda navigator buffer.\n\n#### PYTHONPATH\n\nYou can add your project to the Emacs `PYTHONPATH`.  If you store\nproject dependencies somewhere on your machine, you can add them as\nwell.\n\n```lisp\n(add-to-list 'python-shell-extra-pythonpaths \"/path/to/the/project\")\n(add-to-list 'python-shell-extra-pythonpaths \"/path/to/the/dependency\")\n```\n\n#### Virtual environment\n\nUse a virtual environment to isolate your project dependencies from\nothers on the system.  You can additionally install your project in an\neditable mode in the virtual environment.  This will improve search\nfunctionality.  Then activate this virtual environment inside Emacs.\n\n    M-x pythonic-activate RET /path/to/virtualenv RET\n\nAlso you can use\n[pyenv-mode](https://github.com/proofit404/pyenv-mode) or similar\npackage to hold virtual environment in actual state.\n\nEach action above applies to `anaconda-mode` immediately.  The next\n`anaconda-mode` command you call will use this environment for search\ncompletion candidates.\n\n#### Tramp\n\nIt's possible to use anaconda-mode on a remote server when you connect\nto it using tramp.  Anaconda-mode can search for completion candidates\nand all other stuff on remote server while you're running Emacs\nlocally.  Just open an interesting remote file.\n\n    C-x C-f /ssh:remote_host:project/__init__.py RET\n\nAfter tramp successfully connects and you see actual buffer content,\ncompletion and definitions search should work as usual.  You can even\nuse virtual environment from remote host.\n\n    M-x pythonic-activate RET /ssh:remote_host:/home/user/venv RET\n\nOr specify another remote interpreter\n\n```lisp\n(setq python-shell-interpreter \"/usr/bin/python\")\n```\n\nIt is important to remember that `remote_host` must be a real host\nname or an IP address.  SSH aliases not allowed to be used with\nanaconda-mode.  All kinds of searching from inside the virtual\nenvironment are available from any buffer.  However searching inside\nyour project is available only if you open it on the same machine as\nthe interpreter.\n\n#### Vagrant\n\nYou can get all the intelligent features of anaconda-mode with virtual\nenvironments deployed on your vagrant box. Fire up the vagrant machine\nas usual.  The easiest way to handle authentication is to copy your\npublic ssh key to the vagrant box.\n\n    ssh-copy-id vagrant@localhost -p 2222\n\nNow open your project inside the vagrant box.\n\n    C-x C-f /ssh:vagrant@localhost#2222:/vagrant/polls/views.py\n\nOptionally you can activate your project environment, if installed\ninside vagrant.\n\n    M-x pythonic-activate RET /ssh:vagrant@localhost#2222:/vagrant/polls/venv RET\n\n#### Docker\n\nYou can use definition, reference and auto-completion search for\ndependencies installed in the Docker container.  Let suppose your\nproject layout is the same as in [Compose and\nDjango](https://docs.docker.com/compose/django/) tutorial.  To use\n`anaconda-mode` together with Docker you need to install two\nadditional external dependencies.  First of all, you need to install\n[docker-tramp](https://github.com/emacs-pe/docker-tramp.el) Emacs\npackage.  The second step is to install Unix `socat` utility.  You\nshould have your containers up and running\n\n    docker-compose up web\n\nAfter that, you can set Python interpreter to one installed inside\ncontainer\n\n```lisp\n(setq python-shell-interpreter \"/usr/local/bin/python\")\n```\n\nNow you can open some file inside the project running inside a\ncontainer\n\n    C-x C-f /docker:root@django_web_1:/code/manage.py\n\nIf you try to find the definition of the Django module imported in\nthis buffer, `anaconda-mode` will jump to the package installed inside\nthis Docker container.\n\n## FAQ\n\nIf you see constant response reading error, try to change localhost\naddress from default `127.0.0.1` to `localhost`.  This is likely to\nfix problems on Mac OS.\n\n```lisp\n(setq anaconda-mode-localhost-address \"localhost\")\n```\n\n## Bug Reports\n\nPlease attach `*anaconda-mode*`, `*anaconda-response*` and\n`*anaconda-socat*` buffer content to every created issue.\n\n## Thanks\n\n* Dmitry Gutov **@dgutov**\n* Bo Lin **@sadboy**\n* Vasilij Schneidermann **@wasamasa**\n* Fredrik Bergroth **@fbergroth**\n* Fabio Corneti **@fabiocorneti**\n* Tom Davis **@tdavis**\n* Sviridov Alexander **@sviridov**\n* Mario Rodas **@marsam**\n","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythonic-emacs%2Fanaconda-mode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpythonic-emacs%2Fanaconda-mode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythonic-emacs%2Fanaconda-mode/lists"}