Open JamesSample opened 4 years ago
Thanks for opening this, @JamesSample. This is really more of a conda question than a conda-forge question. But yes, the purpose of conda-forge is to produce binary-compatible environments. So the error message you are seeing is say that this is not possible for the packages listed. In this situation, you have a couple of options:
Thanks for the reply, @scopatz!
When you say "loosening the pins", do you mean the pinned package versions in my requirements.txt
, or is there some other setting in conda I'm not aware of? At present, I have no version pinning at all in requirements.txt
in order to give the solver maximum flexibility in finding a solution (I did have the versions pinned initially, but have progressively removed them). Right now, conda is saying my selected conda-forge packages are just fundamentally incompatible, regardless of versions.
Do you have any advice for interpreting the output from the solver regarding version conflicts, please? conda thinks there are problems, but I can't see them in the output above. Am I reading it wrongly?
Thanks for suggesting mamba - I hadn't heard of it before but it sounds great! I'll definitely give it a go :-)
Ahh yeah, then maybe you should try adding version pins in the requirement.txt to restrict the search space.
Do you have any advice for interpreting the output from the solver regarding version conflicts, please? conda thinks there are problems, but I can't see them in the output above. Am I reading it wrongly?
I wish I did! I often have problems reading them myself, and sometimes they report incorrect conflicts (that are a result of higher-level problems). This is an NP-hard problem, so it has been tricky for the conda team to figure out how to report meaningful info here. What I do in these situations is to try to remove/comment-out packages until I get to an environment that is installable, then add packages back in to find what fails. It is a binary search method basically. Even then it doesn't always work
Thanks @scopatz ! The workflow you've described is basically my current approach, so I'll keep iterating to see if I can find a workable solution. Good to know it's not just me, anyway!
I've also just had a go using mamba, and although it still isn't working it is much faster, and so far the error messages seem more helpful. Thanks for the tip :-)
Great! Glad I could help!
Hi!
Issue
I'm trying to extend the jupyter/datascience-notebook Docker file. I would like to install a lot of additional packages - maybe more than is sensible within a single environment - but since they're all available on conda-forge I thought it was worth a try. I've been careful to make sure that my starting environment only contains packages from conda-forge (see the output from
conda list
, below) and I'm installing the new packages usingconda install -c conda-forge --strict-channel-priority --override-channels --file conda_requirements.txt
which I think should make sure all the new packages come only from conda-forge too.
The solver "thinks" for quite a long time (about 40 minutes) and then produces a long list of package conflicts. I'm not sure how to interpret this, however, because in most cases I can't identify the conflicts. For example, here is a small part of the output:
If I'm interpreting this correctly, wouldn't installing
cligj=0.5
andsix=1.15
(both of which are on conda-forge) satisfy the above? If not, can someone explain where I'm going wrong, please?More generally, is it unrealistic to expect version and binary compatibility within conda-forge? (I understand there are incompatibilities between channels, but thought I might be OK using just conda-forge.
As additional background, I do actually have a working environment with all the packages I need that I created just using
pip
,apt-get
andR
some time ago. However, for this I have to rebuild the entire Jupyter stack (as far as the datascience-notebook) myself, and then add the extra packages. It would be much simpler and more maintainable if I could derive straight from the datascience-notebook using conda instead. I first tried this a few years ago, but at that time not all the packages I wanted were available on conda-forge and I ran into binary incompatibilities between conda-forge and other channels. It now looks as though everything I need is on conda-forge, so I'm keen to try again :-)Any suggestions or advice gratefully received!
Thank you :-)
Environment (
conda list
):Details about
conda
and system (conda info
):