Open eguiraud opened 1 year ago
If the goal is to build an "application" i.e. this will be the end consumer of these libraries, then any Python locking dependency manager would also suffice, e.g. pdm
, pip-tools
, or even poetry
. PDM would be my recommendation, and its lockfile will (IIRC) solve across your Python versions supported in the python-version
field. The caveat is that libraries shouldn't use upper caps here, but for applications I believe it's slightly better.
Of course, if you need conda-forge
packages too, then the mixing problem arises.
The current requirements.txt does not work for 3.11 because of the specified versions of llvmlite and numba. In general requiring specific versions of each package in the environment without fixing the python version will not work.
Possible solutions could be:
In case it can be useful, here is an
environment.yml
that works for me (Python 3.10). It could be a starting point for producing a conda lock file. However it has the issue that pip, in order to install the few packages that are not available from conda-forge, ends up uninstalling and reinstalling packages such as coffea and uproot, which is not nice. The resulting environment seems to be stable as far as I can tell though (EDIT: and it includes scikit-learn in order to fix #140 ) .EDIT: as of 12/10/2023, the environment file below does not work out of the box anymore: func_adl/servicex and coffea disagree on which awkward version they want, and since func_adl/servicex must be installed via pip while the rest is installed via conda, there is no one resolved that can work out the conflict.