If you want to get intimidated by JupyterHub take a look at https://github.com/easybuilders/JSC/blob/2020/Golden_Repo/j/Jupyter/Jupyter-2021.3.2-gcccoremkl-10.3.0-2021.2.0-Python-3.8.5.eb
On Fri, 4 Feb 2022 at 15:53, Arnau <[email protected]> wrote: > Dear all, > > I'm again struggling with Python package installation. I need a bit of > advice/orientation on how to do it.... > > I'm writing a new easyconfig for jupyterhub 2.1.1. I started creating a > virtualenv to get all the jupyterhub's dependencies. I ended up with a list > of 104 packages (not using other python packages from easybuild like > IPython, etc, and also adding a bunch of extra packages like pythonOAuth, > BatchSpawner, gitl and some other extensions. I'd like to make this > installation as less dependent as possible from the other installed > software. > > Once I've collected the list I'm ready to write a PythonBundle easyconfig. > But I have two issues: > > 1.- how do I get the order of package installation? For short list of > packages I always went for try/error approach. But with 104 package this > will be a nightmare. > > 2.- I'm facing an issue, I believe I already reported but got no answer, > when a packages relies on another package: after package A has been > installed package B, that depends on A, fails to install because it says > that package A cannot be found. > > My easyconfig looks like > > ------- > >> easyblock = 'PythonBundle' >> name = 'jupyterhub' >> version = "2.1.1" >> versionsuffix = '-Python-%(pyver)s' >> homepage = 'http://jupyter.org' >> description = """JupyterHub is a multiuser version of the Jupyter >> (IPython) notebook designed >> for centralized deployments in companies, university classrooms and >> research labs.""" >> toolchain = {'name': 'foss', 'version': '2021a'} >> dependencies = [ >> ('Python', '3.9.5','-bare'), >> ('configurable-http-proxy', '4.5.1'), >> ('R','4.1.2') >> ] >> sanity_check_paths = { >> 'files': ['bin/jupyterhub'], >> 'dirs': ['lib/python%(pyshortver)s/site-packages/jupyterhub'], >> } >> >> exts_default_options = { >> 'use_pip': True, >> 'use_pip_for_deps': 'True' >> } >> exts_list = [ >> ('greenlet','1.1.2', { >> 'source_urls': ['https://pypi.python.org/packages/source/g/greenlet'], >> }), >> ('SQLAlchemy','1.4.31', { >> 'source_urls': ['https://pypi.python.org/packages/source/S/SQLAlchemy' >> ], >> }), >> ('alembic','1.7.6', { >> 'source_urls': ['https://pypi.python.org/packages/source/a/alembic'], >> }), >> [...] > > ----------- > > > the error I see is: > > == 2022-02-04 15:38:01,193 build_log.py:169 ERROR EasyBuild crashed with >> an error (at >> easybuild/sl7.x86_64.foss-2021a/software/EasyBuild/4.5.1/lib/python2.7/site-packages/easybuild/base/exceptions.py:124 >> in __init__): cmd " pip install >> --prefix=/home/x2bioc/easybuildinstall/software/jupyterhub/2.1.1-foss-2021a-Python-3.9.5 >> --ignore-installed --no-index --no-build-isolation ." exited with exit >> code 1 and output: >> Processing >> /dev/shm/jupyterhub/2.1.1/foss-2021a-Python-3.9.5/SQLAlchemy/SQLAlchemy-1.4.31 >> DEPRECATION: A future pip version will change local packages to be >> built in-place without first copying to a temporary directory. We recommend >> you use --use-feature=in-tree-build to test your packages with this new >> behavior before it becomes the default. >> pip 21.3 will remove support for this functionality. You can find >> discussion regarding this at https://github.com/pypa/pip/issues/7555. >> ERROR: Could not find a version that satisfies the requirement >> greenlet!=0.4.17 (from sqlalchemy) (from versions: none) >> ERROR: No matching distribution found for greenlet!=0.4.17 > > > and yes, greenlet was successfully installed. > > So, anyone could explain to me how to use PythonBundle properly? > > > TIA, > >

