System packager install packages with None version

Running /opt/orangeqs/juice/bin# ./pip list gives the following list:

Package                 Version
----------------------- -----------
aiocsv                  1.4.0
aiohappyeyeballs        2.6.1
aiohttp                 None
aiosignal               1.4.0
annotated-types         0.7.0
asttokens               3.0.0
attrs                   25.4.0
bokeh                   None
certifi                 None
click                   8.3.0
comm                    0.2.3
contourpy               1.3.3
debugpy                 1.8.17
decorator               5.2.1
executing               2.2.1
flexcache               0.3
flexparser              0.4
frozenlist              1.8.0
idna                    3.11
influxdb-client         1.49.0
ipykernel               6.31.0
ipython                 None
ipython_pygments_lexers 1.1.1
jedi                    0.19.2
Jinja2                  3.1.6
jupyter_client          8.6.3
jupyter_core            5.9.1
jupyter-kernel-proxy    1.0.1
markdown-it-py          4.0.0
MarkupSafe              3.0.3
matplotlib-inline       0.2.1
mdurl                   0.1.2
multidict               6.7.0
narwhals                None
nest-asyncio            1.6.0
numpy                   2.3.4
orangeqs-juice-core     None
packaging               25.0
pandas                  2.3.3
parso                   0.8.5
pexpect                 4.9.0
pillow                  12.0.0
pint                    None
pip                     None
platformdirs            4.5.0
prompt_toolkit          3.0.52
propcache               0.4.1
psutil                  None
ptyprocess              0.7.0
pure_eval               0.2.3
pydantic                None
pydantic-core           None
pydantic-settings       None
Pygments                2.19.2
python-dateutil         2.9.0.post0
python-dotenv           None
pytz                    2025.2
PyYAML                  6.0.3
pyzmq                   27.1.0
reactivex               None
rich                    14.2.0
setuptools              80.9.0
six                     1.17.0
stack-data              0.6.3
tomli_w                 1.2.0
tornado                 6.5.2
traitlets               5.14.3
typing_extensions       4.15.0
typing-inspection       0.4.2
tzdata                  2025.2
urllib3                 2.5.0
wcwidth                 0.2.14
xyzservices             None
yarl                    1.22.0

Where many packages version are None. This causes the juice install --restart --rebuild command to fail with the following traceback

Rendered runtime data service file
Rendered orchestrator service file
Reloaded systemd daemon
Enabled preliminary services
Restarted preliminary data service.
Ensured existence of influxdb2 secrets directory.
InfluxDB2 secrets file already exists, reusing.
Ensured influxdb2 secrets file exists.
Ensured existence of influxDB2 data folders
Rendered InfluxDB2 podman service files
Reloaded systemd daemon
Restarted influxdb2 service.
InfluxDB2 is running and healthy.
Created InfluxDB2 buckets.
Created InfluxDB2 tokens for services and users.
Rendered 3 environment definitions
Rendered 3 podman build service files
Rendered 2 podman container service files
Rendered 2 supervisor configurations
Reloaded systemd daemon
Rebuilt 3 images
Restarted 2 services
Successfully installed OrangeQS Juice services.
Traceback (most recent call last):
  File "/bin/juice", line 7, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/click/core.py", line 1462, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/click/core.py", line 1383, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/click/core.py", line 1850, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/click/core.py", line 1246, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/click/core.py", line 814, in invoke
    return callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/orangeqs/juice/cli/install.py", line 370, in install
    _install_jupyterhub_logic(restart, rebuild, systemd_reload)
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/orangeqs/juice/cli/install.py", line 210, in _install_jupyterhub_logic
    from orangeqs.juice.orchestration import data, defaults, jupyterhub, podman, systemd
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/orangeqs/juice/orchestration/jupyterhub.py", line 11, in <module>
    from orangeqs.juice.dashboard._constants import DASHBOARD_PORT
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/orangeqs/juice/dashboard/__init__.py", line 8, in <module>
    from orangeqs.juice.dashboard.dashboard_server import Dashboard
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/orangeqs/juice/dashboard/dashboard_server.py", line 10, in <module>
    from bokeh.server.tornado import BokehTornado
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/bokeh/server/tornado.py", line 48, in <module>
    from ..resources import Resources
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/bokeh/resources.py", line 660, in <module>
    CDN = Resources(mode="cdn")
          ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/bokeh/resources.py", line 357, in __init__
    cdn = self._cdn_urls()
          ^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/bokeh/resources.py", line 448, in _cdn_urls
    return _get_cdn_urls(self.version, self.minified)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/orangeqs/juice/lib/python3.12/site-packages/bokeh/resources.py", line 591, in _get_cdn_urls
    version = docs_cdn if docs_cdn else __version__.split("+")[0]
                                        ^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'split'
Edited by Gabriel Chatelain