[Cylc 8 - cylc-uiserver] Stuck at building dependencies when try to install cylc-uiserver via pip / conda

Hi Cylc Team,

I’m trying to download all Python dependencies of cylc-uiserv from a machine with Internet connection for offline installation in a production environment without Internet connection.

First, tried ‘pip3 download’ with a bare Python 3.8 Env., like this

[jliu@asp2a-login-nea01 ~]$ pip3 list
Package    Version
---------- -------
pip        22.0.4
setuptools 56.0.0

pip3 download -vvv --no-binary=":all:" --progress-bar=on  --dest=$HOME/SRC/cylc-uiserver cylc-uiserver 

After about 4 hours, stuck at building dependencies of jupyterlab-pygments.

Then, went for anaconda3/2021.11 with Python 3.9, like this

source  /home/project/17001770/app/anaconda3/2021.11/bin/activate

conda config --set unsatisfiable_hints True

export CONDA_PKGS_DIRS=/home/project/17001770/conda_pkgs/cylc-uiserver

conda install -vvv  --download-only -c conda-forge cylc-uiserver

It took more than 10 hours in examining conflict for 394 packages and downlaoded nothing in the spcified target dirctory. Wondering if missed something from the command “conda install --download-only” .

Wondering life woudl be easier if it could provide a full lists of Python dependencis of Cylc 8 ( inclusives cylc-uiserver, cylc-uiserver’[hub]') based on a bare Python 3.x Env. as an alternative workaround for off-line installation, such as output from pip3 freeze.

PS,

  1. pip donwload worked fine for cylc-flow, cylc-rose, metomi-rose.
  2. tried to upload the output, but it’s not allowed.

Thanks for your time

We recommend using mamba rather than conda (which is getting increasingly slow), see https://cylc.discourse.group/t/trouble-installing-cylc-8-1-0/584/2.

For installation on systems without internet access we use conda pack.

conda pack --dest-prefix=/path/to/cylc -o packed-env.tgz

The --dest-prefix option specifies the path to where cylc will be installed on the destination platform and avoids any need to “unpack” after untarring. https://conda.github.io/conda-pack/cli.html

We use conda pack for all our installations. On our build host we create 2 environments (using mamba), one containing the full installation and one containing the minimal environment needed on remote job platforms (cylc-flow-base + metomi-rose-base). We then pack all the required environments for the many platforms where we install Cylc.

For the record, the latest build of the Cylc documentation (which is currently only available via the “nightly” docs link) includes the following note:

Note

We recommend using the fast Mamba environment solver to install Cylc. Mamba can be used as a drop-in replacement for the conda command, or as a conda command plugin. The classic conda environment solver may be too slow for a complex package like Cylc.