Skip to content

bug: Python version in build-macos-app.sh #837

@smacm

Description

@smacm

Bug Report

NanoVNA-Saver version:
0.7.3
Current behavior:

Building for macOS Tahoe with Homebrew managed Python fails with errors:

From the nanovna_env directory, I ran ./build-macos-app.sh
The build fails - see detailed output below.
The failure occurs because the build-macos-app.sh script invokes python3, which on my machine is python 3.13.7, but nanovnaserver requires python '<3.13,>=3.10' - so mine is too new.
I successfully completed the build by running the commands in build-macos-app.sh explicitly specifying python3.12, for example as below:

python3.12 -m pip install pip==24.2 setuptools==75.2.0

However I realize this isn't a general solution.

Expected behavior:

Successful build of NanoVNAServer.app on running build-macos-app.sh

Steps to reproduce:

Related code:


Other information:

(nanovna_env) **redacted**@macbookair nanovna-saver % ./build-macos-app.sh
Collecting pip==24.2
  Using cached pip-24.2-py3-none-any.whl.metadata (3.6 kB)
Collecting setuptools==75.2.0
  Using cached setuptools-75.2.0-py3-none-any.whl.metadata (6.9 kB)
Using cached pip-24.2-py3-none-any.whl (1.8 MB)
Using cached setuptools-75.2.0-py3-none-any.whl (1.2 MB)
Installing collected packages: setuptools, pip
  Attempting uninstall: pip
    Found existing installation: pip 25.2
    Uninstalling pip-25.2:
      Successfully uninstalled pip-25.2
Successfully installed pip-24.2 setuptools-75.2.0

[notice] A new release of pip is available: 24.2 -> 25.2
[notice] To update, run: pip install --upgrade pip
Obtaining file:///Users/**redacted**/nanovna-saver
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Collecting pyserial~=3.5 (from NanoVNASaver==0.7.3.post1.dev7+gf793d2ee9)
  Using cached pyserial-3.5-py2.py3-none-any.whl.metadata (1.6 kB)
Collecting pyside6~=6.8 (from NanoVNASaver==0.7.3.post1.dev7+gf793d2ee9)
  Using cached pyside6-6.9.2-cp39-abi3-macosx_12_0_universal2.whl.metadata (5.3 kB)
Collecting numpy~=2.1 (from NanoVNASaver==0.7.3.post1.dev7+gf793d2ee9)
  Using cached numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl.metadata (62 kB)
Collecting scipy~=1.14 (from NanoVNASaver==0.7.3.post1.dev7+gf793d2ee9)
  Using cached scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl.metadata (62 kB)
INFO: pip is looking at multiple versions of nanovnasaver to determine which version is compatible with other requirements. This could take a while.

[notice] A new release of pip is available: 24.2 -> 25.2
[notice] To update, run: pip install --upgrade pip
ERROR: Package 'nanovnasaver' requires a different Python: 3.13.7 not in '<3.13,>=3.10'
Compiling UI files...
/Users/**redacted**/nanovna-saver/macbuildenv/bin/python3: Error while finding module specification for 'tools.ui_compile' (ModuleNotFoundError: No module named 'tools')
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import NanoVNASaver; print(f'NanoVNASaver version: {NanoVNASaver.__version__}')
    ^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'NanoVNASaver'
Collecting pyinstaller
  Using cached pyinstaller-6.16.0-py3-none-macosx_10_13_universal2.whl.metadata (8.5 kB)
Collecting altgraph (from pyinstaller)
  Using cached altgraph-0.17.4-py2.py3-none-any.whl.metadata (7.3 kB)
Collecting macholib>=1.8 (from pyinstaller)
  Using cached macholib-1.16.3-py2.py3-none-any.whl.metadata (11 kB)
Collecting packaging>=22.0 (from pyinstaller)
  Using cached packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
Collecting pyinstaller-hooks-contrib>=2025.8 (from pyinstaller)
  Using cached pyinstaller_hooks_contrib-2025.9-py3-none-any.whl.metadata (16 kB)
Requirement already satisfied: setuptools>=42.0.0 in ./macbuildenv/lib/python3.13/site-packages (from pyinstaller) (75.2.0)
Using cached pyinstaller-6.16.0-py3-none-macosx_10_13_universal2.whl (1.0 MB)
Using cached macholib-1.16.3-py2.py3-none-any.whl (38 kB)
Using cached altgraph-0.17.4-py2.py3-none-any.whl (21 kB)
Using cached packaging-25.0-py3-none-any.whl (66 kB)
Using cached pyinstaller_hooks_contrib-2025.9-py3-none-any.whl (444 kB)
Installing collected packages: altgraph, packaging, macholib, pyinstaller-hooks-contrib, pyinstaller
Successfully installed altgraph-0.17.4 macholib-1.16.3 packaging-25.0 pyinstaller-6.16.0 pyinstaller-hooks-contrib-2025.9

[notice] A new release of pip is available: 24.2 -> 25.2
[notice] To update, run: pip install --upgrade pip
60 INFO: PyInstaller: 6.16.0, contrib hooks: 2025.9
60 INFO: Python: 3.13.7
71 INFO: Platform: macOS-26.0-arm64-arm-64bit-Mach-O
72 INFO: Python environment: /Users/**redacted**/nanovna-saver/macbuildenv
72 INFO: wrote /Users/**redacted**/nanovna-saver/NanoVNASaver.spec
75 INFO: Removing temporary files and cleaning cache in /Users/stevemacminn/Library/Application Support/pyinstaller
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/[email protected]/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/metadata/__init__.py", line 407, in from_name
    return next(iter(cls.discover(name=name)))
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/**redacted**/nanovna-saver/macbuildenv/bin/pyinstaller", line 8, in <module>
    sys.exit(_console_script_run())
             ~~~~~~~~~~~~~~~~~~~^^
  File "/Users/**redacted**/nanovna-saver/macbuildenv/lib/python3.13/site-packages/PyInstaller/__main__.py", line 231, in _console_script_run
    run()
    ~~~^^
  File "/Users/**redacted**/nanovna-saver/macbuildenv/lib/python3.13/site-packages/PyInstaller/__main__.py", line 215, in run
    run_build(pyi_config, spec_file, **vars(args))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/**redacted**/nanovna-saver/macbuildenv/lib/python3.13/site-packages/PyInstaller/__main__.py", line 70, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/**redacted**/nanovna-saver/macbuildenv/lib/python3.13/site-packages/PyInstaller/building/build_main.py", line 1272, in main
    build(specfile, distpath, workpath, clean_build)
    ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/**redacted**/nanovna-saver/macbuildenv/lib/python3.13/site-packages/PyInstaller/building/build_main.py", line 1210, in build
    exec(code, spec_namespace)
    ~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/**redacted**/nanovna-saver/NanoVNASaver.spec", line 5, in <module>
    datas += copy_metadata('NanoVNASaver', recursive=True)
             ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/**redacted**/nanovna-saver/macbuildenv/lib/python3.13/site-packages/PyInstaller/utils/hooks/__init__.py", line 969, in copy_metadata
    dist = importlib_metadata.distribution(package_name)
  File "/opt/homebrew/Cellar/[email protected]/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/metadata/__init__.py", line 960, in distribution
    return Distribution.from_name(distribution_name)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/[email protected]/3.13.7/Frameworks/Python.framework/Versions/3.13/lib/python3.13/importlib/metadata/__init__.py", line 409, in from_name
    raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: No package metadata was found for NanoVNASaver
tar: NanoVNASaver.app: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
(nanovna_env) **redacted**@macbookair nanovna-saver %  

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions