-
Notifications
You must be signed in to change notification settings - Fork 12
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
Fix dependency conflict for issue #71
Conversation
Update Pipfile.lock
|
@erickpeirson BTW, dependency conflict problems are very common in practice in python ecosystem. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes look good; thanks @NeolithEra for doing this.
Indeed, "dependency hell" is real. A few thoughts:
- As you pointed out in Potential dependency conflicts between arxiv-submission-core and bleach #70, we will want to be as permissive as possible in our upstream libraries, e.g. arxiv-base, arxiv-auth, arxiv-vault, etc. arxiv-submission-core is a bit of a weird one, in that it does provide a library (arxiv.auth package), but I think it's OK to be more specific here.
- We should be more systematic in pinning dependencies to specific versions in downstream applications.
- Pipenv is far from perfect, and sometimes conflicts are a little opaque. The error message for a dependency conflict suggests using
pipenv --graph
, but I find that this is almost always useless, since the conflict is generally buried beneath a couple of layers of dependencies. Instead, I'd suggest usingpipenv lock --verbose
, and using the output to retrace how pipenv ended up with the specific conflict. The latter approach has almost always yielded a clear answer.
Hope that answers your question
@erickpeirson Thanks for your answer. The dependency resolution in Python world is far from being easy.
Maybe a better mechanism of maintaining the rationality of dependency constraints among projects in PypI ecosystem is much-needed! |
This is where
Indeed, although using the
Yes. Although I think it's OK in this case, as these changes would make sense for any of the downstream apps.
I couldn't agree more! :-) |
@erickpeirson Yes. Thanks for your sharing your experience. Ideally, if we can see the topological structure of a project's full dependency tree before installation or build process, then the dependency conflicts can be diagosed more intuitively (like the dependency tree shown by Maven for Java projects). But it is not easy. The full tree should be constructed by mining all the required packages in a topological order according to requirment.txt. Thanks for discussing this problem with me. Best, |
Closing this as the dependencies in question where updated in a recent PR. |
#70