Support for pymavlink on Windows

I’m working on a set of Python scripts that analyze data from .bin log files. My goal is to make them as multi-platform as possible - and I’ve been testing on Ubuntu, MAC OS, and Windows.

All the scripts rely on a python package called pymavlink.

To set up the development environment I use a requirements.txt file with the following dependencies:

flask>=2.2
flask-cors
flask-login
flask-wtf
flask-sqlalchemy
pandas
numpy
matplotlib
pyulog
pymavlink

The issue I’m running into is with the latest version of pymavlink—it doesn’t currently offer a prebuilt wheel for Windows, so pip attempts to build it from source. That process requires both a Rust compiler and a Windows linker (via Visual Studio Build Tools), which feels like a heavy lift for users who just want to run a few simple Python scripts.

One workaround I’m exploring is pinning an older version of pymavlink —specifically 2.4.41—which may include a prebuilt wheel and avoid the need for native compilation.

Another option I’ve considered is using PyInstaller to package the scripts into standalone .exe files for Windows. I suspect this might be how MavExplorer is distributed, though I haven’t confirmed.

Before settling on a path, I’d benefit greatly from hearing from others in the community. I imagine many of you have navigated this already, and I’d appreciate any insights or recommendations.

Thanks in advance!

Use uv and pyinstaller and pyproject.toml instead of requirements.txt.

This achieves your goals in a modern way

Pymavlink does offer prebuilt binaries for Windows (and has for some time), for Python versions 3.8-3.13. See pymavlink · PyPI for the complete listing.

On Windows you can try Chocolatey and then install Python with it on a location of your choice.

Thank you @stephendade

I had installed python 3.14 on my Windows test machine.

I removed it and installed 3.13 instead - and the pre-compiled version of pymavlink was there and everything worked as intended.

Any idea who is responsible for pymavlink? Perhaps they’d welcome the suggestion to put the compiled version in python 3.14.

Thanks!

Thanks for the suggestion @amilcarlucas

I’m trying to make my scripts easily cross platform - Windows, Mac and Linux.

Now that I’ve found that compiled pymavlink is in python 3.13, I’ve accomplished that.

I had been using Python 3.14 on Windows - and 3.13 on my other test platforms.

Any idea who supports pymavlink? I wonder if they’re aware of not having a pre-compiled version of pymavlink on python 3.14.

Interesting. Thanks. I’ll see what I can learn.

pymavlink repo is here: GitHub - ArduPilot/pymavlink: python MAVLink interface and utilities

Thanks @stephendade - silly of me not to just check there.

I posted an issue regarding no precompiled version on Python 3.14. Maybe I did something wrong - but thought it was worth at least commenting about.

Thanks!

Python’s 3.14 release is only about a week old. It takes time for projects to provide support.

Even Arch Linux, notorious for bleeding edge support, has not yet released an official package for Python 3.14, much less updated libraries for it.

1 Like

Hello,

Where did you see pymavlink need rust or windows linker ?
Pymavlink is a set of python tools so it needs python and optionally some xml tools. A compiler may be needed for C-extension but that is optional

Beside the C-extension all the rest of file are python file, so there shouldn’t be any issues to use it on windows … what instructions are you following, something looks wrong there !