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