neovim
Transition packgage for pynvim
What it is and what it does
This package bridges Python and Neovim, enabling two main workflows: writing Python remote plugins that integrate with Neovim's plugin system, and scripting Neovim from Python by connecting to a running instance or embedding one. It exposes Neovim's msgpack-rpc API to Python, allowing access to buffers, windows, variables, and Vimscript/Lua functions. The package has no runtime dependencies beyond Neovim itself, but requires the Neovim binary to be installed separately on your system.
The library supports both synchronous and asynchronous operations, thread-safe requests, and can be used interactively from the Python REPL or embedded in larger applications. It also enables the `:python3` Vim feature in Neovim, allowing Vimscript to call Python code. A known limitation exists: Vimscript dictionaries accessed from Python are copies, not references, so modifications must be reassigned as whole objects rather than mutated in place.
Use it for:
- Write Python remote plugins for Neovim that handle Vimscript function calls, define commands, and run asynchronously.
- Automate Neovim from Python scripts by connecting to a running instance and manipulating buffers and editor state.
- Embed Neovim as a headless text editor component in a Python application using child process attachment.
- Interactively explore and test Neovim's API from the Python REPL by attaching to a running instance.
- Call Lua functions and Vimscript functions from Python code via exec_lua and funcs interfaces.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A Python client library that enables Python plugins in Neovim and allows scripting Neovim processes through its msgpack-rpc API.
Yes, if you are actively developing Neovim plugins or scripting Neovim from Python. The package is actively maintained and permissively licensed. However, the gap between the latest PyPI release (2018-11-17) and current repository activity creates uncertainty about version currency. Verify that version 0.3.1 is compatible with your Neovim version before committing. Installation requires a pre-existing Neovim binary, which adds friction.
Install
neovim on PyPI
pip
pip install neovimuv
uv add neovimpoetry
poetry add neovimInstalling neovim
Before you install
Installation requires a compiled Neovim binary (neovim-0.3.1.tar.gz) as a system dependency, creating high friction. The repository is actively maintained with recent commits, but the latest PyPI release dates to 2018-11-17, creating uncertainty about version currency despite ongoing repository activity.
License in practice
Licensed under Apache (permissive), allowing commercial and private use with minimal restrictions. No notable licensing constraints for most use cases.
Quickstart
# Install: requires Neovim binary already installed
pip install neovim
# Connect to running Neovim instance
import pynvim
nvim = pynvim.attach('socket', path='/tmp/nvim.sock')
buffer = nvim.current.buffer
buffer[0] = 'replace first line'
Requires Neovim binary installed on the system and Python 3.10 or later. Neovim must be running or launched separately (e.g., `nvim --listen /tmp/nvim.sock`).
Verify before relying
- Whether the 2018-11-17 release date reflects actual staleness or if PyPI metadata is outdated given active repository commits through 2026.
- Compatibility and feature parity between version 0.3.1 and current Neovim releases.
- Whether uv or pipx installation paths are recommended over standard pip installation.
Package facts
| License | Apache (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | actively maintained — 2,827 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 86,455/month — #13,861 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: neovim-0.3.1.tar.gz
Tags
More Terminals packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
richRich renders styled text, tables, progress…
permissive · top 100 on PyPI
coloramaColorama makes ANSI escape sequences for…
permissive · top 100 on PyPI
wcwidthMeasures the displayed width of Unicode strings…
permissive · top 1,000 on PyPI
ptyprocessRun a subprocess in a pseudo terminal (pty) and…
permissive · top 1,000 on PyPI
pexpectPexpect spawns and controls interactive console…
permissive · top 1,000 on PyPI
pynvimPynvim is a Python client library that enables…
permissive · top 15,000 on PyPI
virtualenv-cloneClones an existing Python virtualenv to a new…
permissive · top 5,000 on PyPI
clang-formatPackages the clang-format code formatter as a…
permissive · top 5,000 on PyPI
ruff-lspProvides a Language Server Protocol bridge to…
permissive · top 15,000 on PyPI
tclinttclint is a CLI linter, formatter, and language…
permissive · top 15,000 on PyPI
bump-my-versionAutomates version number management in projects…
permissive · top 5,000 on PyPI
pynngProvides Python bindings for nng (nanomsg next…
permissive · top 15,000 on PyPI
tbumptbump automates version bumping in your project…
permissive · top 15,000 on PyPI
crawlerdetectIdentifies bots, crawlers, and spiders by…
permissive · top 15,000 on PyPI
pyvimA Vi/Vim-like text editor implemented entirely…
permissive · top 15,000 on PyPI