fit2gpx icon indicating copy to clipboard operation
fit2gpx copied to clipboard

can't build, pandas error

Open jarjk opened this issue 8 months ago • 2 comments

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!

jarjk avatar Jul 30 '25 18:07 jarjk

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.

hugovk avatar Jul 30 '25 19:07 hugovk

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()

tcecyk avatar Sep 07 '25 02:09 tcecyk