From 4c21723f154d7bdcdf3dbd7c995514c982fb2392 Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Wed, 20 Jan 2021 09:03:41 +0800 Subject: [PATCH] Ignore incompatibilities when resolve dist --- news/4549.bugfix.rst | 1 + news/5632-fh3h343-n234h3jh4d-sfdd.trivial | 0 pipenv/environment.py | 7 ++++++- pipenv/resolver.py | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 news/4549.bugfix.rst delete mode 100644 news/5632-fh3h343-n234h3jh4d-sfdd.trivial diff --git a/news/4549.bugfix.rst b/news/4549.bugfix.rst new file mode 100644 index 00000000..d2d568a9 --- /dev/null +++ b/news/4549.bugfix.rst @@ -0,0 +1 @@ +Fix a bug that ``importlib-metadata`` from the project's dependencies conflicts with that from ``pipenv``'s. diff --git a/news/5632-fh3h343-n234h3jh4d-sfdd.trivial b/news/5632-fh3h343-n234h3jh4d-sfdd.trivial deleted file mode 100644 index e69de29b..00000000 diff --git a/pipenv/environment.py b/pipenv/environment.py index 88c6dbb0..579a34d4 100644 --- a/pipenv/environment.py +++ b/pipenv/environment.py @@ -118,7 +118,12 @@ class Environment(object): except (KeyError, AttributeError, OSError, IOError): # The METADATA file can't be found return deps for req in reqs: - dist = working_set.find(req) + try: + dist = working_set.find(req) + except pkg_resources.VersionConflict: + # https://github.com/pypa/pipenv/issues/4549 + # The requirement is already present with incompatible version. + continue deps |= cls.resolve_dist(dist, working_set) return deps diff --git a/pipenv/resolver.py b/pipenv/resolver.py index a362f247..80de9281 100644 --- a/pipenv/resolver.py +++ b/pipenv/resolver.py @@ -12,7 +12,7 @@ os.environ["PIP_PYTHON_PATH"] = str(sys.executable) def find_site_path(pkg, site_dir=None): import pkg_resources - if site_dir is not None: + if site_dir is None: site_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) working_set = pkg_resources.WorkingSet([site_dir] + sys.path[:]) for dist in working_set: