can't build, pandas error
Hi, I can't figure out what's the cause, not being able to install/build fit2gpx with (uv) pip install fit2gpx.
it produces a massive amount of logs, relating to pandas: problem.log
system info
OS: macOS Sequoia 15.5 arm64
Host: MacBook Pro (13-inch, M1, 2020)
Kernel: Darwin 24.5.0
CPU: Apple M1 (8) @ 3.20 GHz
GPU: Apple M1 (8) [Integrated]
python info
$ uv -V
uv 0.8.3 (Homebrew 2025-07-24)
$ uv python list
cpython-3.14.0rc1-macos-aarch64-none <download available>
cpython-3.14.0rc1+freethreaded-macos-aarch64-none <download available>
cpython-3.13.5-macos-aarch64-none /opt/homebrew/bin/python3.13 -> ../Cellar/[email protected]/3.13.5/bin/python3.13
cpython-3.13.5-macos-aarch64-none /opt/homebrew/bin/python3 -> ../Cellar/[email protected]/3.13.5/bin/python3
cpython-3.13.5-macos-aarch64-none <download available>
cpython-3.13.5+freethreaded-macos-aarch64-none <download available>
cpython-3.12.11-macos-aarch64-none <download available>
cpython-3.11.13-macos-aarch64-none <download available>
cpython-3.10.18-macos-aarch64-none <download available>
cpython-3.9.23-macos-aarch64-none <download available>
cpython-3.9.6-macos-aarch64-none /usr/bin/python3
cpython-3.8.20-macos-aarch64-none <download available>
...
tell me if there's anything else needed for debugging!
Looking at the logs, it's because this project depends on pandas version ^1.5.3, which means >=1.5.3 and <2.0.0:
https://github.com/dodo-saba/fit2gpx/blob/4e8f37518d35b8b3707c65abb5e4f13ac2065dd4/pyproject.toml#L31
You're using Python 3.13 and it's trying and failing to install an old pandas: "Failed to build pandas==1.5.3" which is from January 2023 and only declares supports for Python up to 3.11:
https://pypi.org/project/pandas/1.5.3/
The latest pandas 2.3.1 from July 2025 does support and install for Python 3.13:
https://pypi.org/project/pandas/2.3.1/
Suggestion:
The ^ in the ^1.5.3 version specifier is needlessly restrictive. It should be changed to >= 1.5.3 to allow pip and uv to install newer versions, and of course they should be tested before a release. (I suggest this for the other dependencies too.)
In the meantime, as a user, try using Python 3.12 instead. uv should make this relatively straightforward.
on a whim - set pandas to ^2.0.0, add lxml, run uv pip install -r pyproject.toml and call python3 src/fit2gpx.py in.fit out.gpx
diff --git a/pyproject.toml b/pyproject.toml
index e4319ba..705b1aa 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -28,9 +28,10 @@ packages = [
[tool.poetry.dependencies]
python = "^3.6"
-pandas = "^1.5.3"
+pandas = "^2.0.0"
fitdecode = "^0.10.0"
gpxpy = "^1.5.0"
+lxml = "^6.0.0"
[tool.poetry.scripts]
fit2gpx = "fit2gpx:cli"
diff --git a/src/fit2gpx.py b/src/fit2gpx.py
index ae047eb..3b0fd9c 100644
--- a/src/fit2gpx.py
+++ b/src/fit2gpx.py
@@ -518,3 +518,7 @@ def cli():
f_in=sys.stdin.buffer if args.infile == '-' else args.infile,
f_out=sys.stdout if args.outfile == '-' else args.outfile,
)
+
+
+if __name__ == "__main__":
+ cli()