New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python 2 only deps restricting upgrade #2651
Comments
These problems can also occur between Python 3.4 and Python 3.5 too. I would recommend that people play with a Jupyter Notebook install and cycle through Python versions to get a sense of the work involved. |
Actually, I think this would be solved by something we're kicking around. The idea is to differentiate between requested packages and those installed solely as dependencies. We'd then allow |
This one is related, and amusing: #2480 |
Here's a simple option: build empty versions of these "compatibility" packages. For example, build a version of |
👍 Love this idea. So, I'm guessing requested means one did
Yeah, I was thinking about that as a workaround. I'm a little worried that someone might get confused and assume it should actually be installed though. |
On arch linux and msys2, |
Great info, @mingwandroid! I figured there was a precedent for this behavior elsewhere. It might be good if we can compare some more approaches and see what we can glean from them. |
Explicitly requested is so important I think. If the solver can use that to bias its actions (or its prompts at least) then that would be awesome. |
Indeed,
After this sequence of commands, the set of "requested" packages is A C. If we had just looked at the install requests, we might conclude A B C. Perhaps not the end of the world if we overestimate like that, but since we have the history, we can be reasonably smart about it. |
Fair enough. But at least it's benign if they do make that mistake. And once the above "install history" is implemented, these packages will usually be marked for removal. |
Honestly, I think we need to do a deep dive on pacman and see how much of its existing work we should steal. Though I think namespaces have the potential to provide something truly useful and differentiating. |
Pinning for example is more or less verboten. The emphasis is on latest is greatest, which, if enough systems adopt improves the status quo.I don't mean this as a slight against conda, far from it. We have the additional constraint that people might require specific versions of software. I've never looked into pacman's solver though. With its relatively simple requirements it has always 'just worked'. |
As promised, though way overdue, here is the beginning of a document I've begun to talk about Conda namespaces. It doesn't have anything about implementation details yet---rather, it enumerates some guiding principles that I believe namespaces must satisfy in order to represent a good design. Not surprisingly those principles lead to the design I had in mind, but still. For those of you who are keenly interested in this I invite discussion there. I'm not ready to move this over to a conda issue or WIP PR, because until I flesh out the implementation details, I am concerned I may be missing a fundamental problem with the approach. Once the document is fleshed out I'll make it a full-fledged WIP. |
Sharing it on the conda-forge gitter. |
I found a nit, but I can't figure out how to PR a gist. |
Opened issue ( #3968 ) to discuss this idea of distinguishing between the tracked (user installed) packages and non-user installed packages. |
Looks like discussion has slowed here, and we've got #3968. Going to close this ticket. |
Hi there, thank you for your contribution to Conda! This issue has been automatically locked since it has not had recent activity after it was closed. Please open a new issue if needed. |
Suppose I have package that can be on Python 2 or Python 3, but it requires some backport modules for Python 2. If I start on Python 2, the upgrade to Python 3 gets blocked by the Python 2 dependencies. However, we all know they are not really blockers and we can try to remove them and workaround them. How effective this will be depends on how locked in your stack is to them. Here is a simple example with
jsonschema
. The recipe comes fromconda-forge
so we can clearly seefunctools32
is a Python 2.7 dependency only from the recipe. First I try to go straight to Python 3.As this doesn't work, I remove the Python 2 dependencies (in this case only one). Fortunately, it finds an older version of
jsonschema
where this dependency is not required. However, this is not always the case.Now I don't know what the right solution is here. Maybe it is worth telling the user that these packages must be removed as part of the upgrade and ask for confirmation that this is ok. While this example is simple, it becomes less straightforward for larger stacks (if it is possible at all). I would really appreciate hearing some thoughts on this.
The text was updated successfully, but these errors were encountered: