Skip to main content

Cross-platform Neovim installation via Python packaging

Project description

binwheels-neovim

An unofficial Python package to enable pre-built, cross-platform Neovim installation via standard Python package installation.

Usage

Using uv or pipx:

# uv
uv tool install binwheels-neovim

# pipx
pipx install binwheels-neovim

After installation, the nvim command will be available in your PATH:

nvim myfile.txt

How does it work?

Python wheels adhere to a naming scheme to indicate platform compatibility. The code in this repository is responsible for downloading (Windows/macOS) or compiling (Linux) an official Neovim release and packaging it into a binwheels-neovim wheel with the same version as the Neovim release it includes, and with platform/architecture tags that match the version of Neovim we have downloaded/compiled. For widest Python interpreter compatibility possible, the py3-none tag is used.

During installation, the contents of a Python wheel are unzipped to the site-packages/ directory in whatever Python environment the wheel is being installed into. This is where the Neovim application files end up: a binwheels_neovim/ directory inside site-packages/. But this doesn't help us, because that location is not on the user's $PATH.

To make nvim accessible on the user's $PATH we will leverage the executable scripts functionality of a Python wheel. This functionality allows you to specify a function in your package that will be installed as an executable command in the user's environment. If your environment is a local .venv/ directory, for example, the script would be installed to .venv/bin/. When using uv tool install or pipx install, the executable is added to a location on the user's $PATH.

Putting it all together: In order to make the nvim binary from this package available on the user's path, we need a Python function that will launch the nvim binary in a cross-platform way, and we need that function to itself be installed as an executable command named nvim. That is accomplished by the following:

  1. A file at neovim_pyinstaller/main.py, which contains a launch_neovim() function that launches the nvim binary.
  2. The following entry in pyproject.toml, which ensures launch_neovim() is installed as an executable command named nvim:
[project.scripts]
nvim = "binwheels_neovim.main:launch_neovim"

Platform Support

Currently

  • Linux (x64)
  • macOS (x64, arm64)
  • Windows (x64)

Maybe one day

  • Linux (arm64)

License

This package is licensed under Apache-2.0. Neovim itself is licensed under Apache-2.0 and Vim license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

binwheels_neovim-0.11.4-py3-none-win_amd64.whl (12.2 MB view details)

Uploaded Python 3Windows x86-64

binwheels_neovim-0.11.4-py3-none-manylinux_2_24_x86_64.whl (15.7 MB view details)

Uploaded Python 3manylinux: glibc 2.24+ x86-64

binwheels_neovim-0.11.4-py3-none-macosx_11_0_x86_64.whl (10.5 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

binwheels_neovim-0.11.4-py3-none-macosx_11_0_arm64.whl (10.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file binwheels_neovim-0.11.4-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for binwheels_neovim-0.11.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3dd400d88902e10d5cdd24b0d0cd277e616252bee878dc8dda01195ca0634ceb
MD5 2c98652eff2777f904a5700a47489217
BLAKE2b-256 4c015ad842c93250790ea0ec9d87a2cfac0b37e419f512a47afabc23e13b3916

See more details on using hashes here.

File details

Details for the file binwheels_neovim-0.11.4-py3-none-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for binwheels_neovim-0.11.4-py3-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 0b7776ea1bf4a23a3ba3099f7159f67abc0876e0ba1c496b4ec7262c52ff54f4
MD5 9a117d2edcf3c4c4dea82b1c95e30070
BLAKE2b-256 065d94c9b35c724250a8d84626a219ece61575c6d3c5ac29666749f566410138

See more details on using hashes here.

File details

Details for the file binwheels_neovim-0.11.4-py3-none-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for binwheels_neovim-0.11.4-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 6f577e7a2ad6d6c853e338fdbaff1aa01e8ba102bd92b048113b0b915034f0ec
MD5 2c92f834db5655d0ec1dcb60a9cd8e9c
BLAKE2b-256 20640fdeeac0f3b4a584a13b65ec2b10bd6f81784fd424559d4a14a940d027a2

See more details on using hashes here.

File details

Details for the file binwheels_neovim-0.11.4-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for binwheels_neovim-0.11.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e8c6a0af4067ba0ae680e8d46554c426d9627e12f37ef7fe0b689507dbaa7f03
MD5 a72956d21164dc443a9a4793bc39785c
BLAKE2b-256 3131bf97ab75887fe07b3bc72a1fc7c270dc0f294bdc10752e30b8f0f04b83a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page