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,

