diff --git a/news/2454.bugfix b/news/2454.bugfix new file mode 100644 index 00000000..d60b047f --- /dev/null +++ b/news/2454.bugfix @@ -0,0 +1 @@ +Pipenv will now always use ``pathlib2`` for ``Path`` based filesystem interactions by default on ``python<3.5``. diff --git a/pipenv/_compat.py b/pipenv/_compat.py index 68d8069d..07e75072 100644 --- a/pipenv/_compat.py +++ b/pipenv/_compat.py @@ -29,10 +29,13 @@ except ImportError: _types.add(type(arg)) return _types.pop() -try: - from pathlib import Path -except ImportError: - from pathlib2 import Path +if sys.version_info[:2] >= (3, 5): + try: + from pathlib import Path + except ImportError: + from .vendor.pathlib2 import Path +else: + from .vendor.pathlib2 import Path try: diff --git a/pipenv/project.py b/pipenv/project.py index d13f6491..9c8901e8 100644 --- a/pipenv/project.py +++ b/pipenv/project.py @@ -14,10 +14,7 @@ import six import toml import json as simplejson -try: - from pathlib import Path -except ImportError: - from pathlib2 import Path +from ._compat import Path from .cmdparse import Script from .vendor.requirementslib import Requirement diff --git a/pipenv/utils.py b/pipenv/utils.py index a19f7ed0..12cd8283 100644 --- a/pipenv/utils.py +++ b/pipenv/utils.py @@ -36,13 +36,7 @@ try: from urllib.parse import urlparse except ImportError: from urlparse import urlparse -try: - from pathlib import Path -except ImportError: - try: - from .vendor.pathlib2 import Path - except ImportError: - pass + from distutils.spawn import find_executable from contextlib import contextmanager from .pep508checker import lookup @@ -231,7 +225,7 @@ def actually_resolve_deps( from pipenv.patched.piptools.scripts.compile import get_pip_command from pipenv.patched.piptools import logging as piptools_logging from pipenv.patched.piptools.exceptions import NoCandidateFound - from ._compat import TemporaryDirectory, NamedTemporaryFile + from ._compat import TemporaryDirectory, NamedTemporaryFile, Path class PipCommand(basecommand.Command): """Needed for pip-tools."""