Repository: pypa/pipenv

Issue:
pipenv install/graph fail with 2018.10.9: ImportError: No module named weakref
### Issue description

With pipenv 2018.10.9, all the pipenv commands fail (including `pipenv --support`): 

```pytb
Traceback (most recent call last):
  File "c:\python27\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\pipenv.exe\__main__.py", line 5, in <module>
  File "c:\python27\lib\site-packages\pipenv\__init__.py", line 23, in <module>
    from .cli import cli
  File "c:\python27\lib\site-packages\pipenv\cli\__init__.py", line 3, in <module>
    from .command import cli
  File "c:\python27\lib\site-packages\pipenv\cli\command.py", line 18, in <module>
    from .. import environments
  File "c:\python27\lib\site-packages\pipenv\environments.py", line 4, in <module>
    from .vendor.vistir.misc import fs_str
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\__init__.py", line 4, in <module>
    from .compat import NamedTemporaryFile, TemporaryDirectory, partialmethod
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\compat.py", line 34, in <module>
    from .backports.tempfile import NamedTemporaryFile
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\backports\__init__.py", line 5, in <module>
    from .tempfile import NamedTemporaryFile
  File "c:\python27\lib\site-packages\pipenv\vendor\vistir\backports\tempfile.py", line 16, in <module>
    from backports.weakref import finalize
ImportError: No module named weakref
```

### Enviroment

* pip version: 10.0.1 and 18.1
* Python version: 2.7
* OS: Windows


Fix import error on Python 2.7
Continue #2962 
Close #2961 #2950 


Discussion:
FTR, this means `backports.weakref` module should be added to Py2 dependencies.  
This looks quite similar to #2950. @immerrr: What exactly should be added where?
@svenpanne to fix this you can run `pip install backports.weakref` manually, or wait until #2962 is cleaned up and accepted.
We have these vendored already, but the vendoring script isn’t rewriting imports properly (I think it only rewrites the `patched` directory). Most likely we need to fix this

Resolving patch:
diff --git a/pipenv/vendor/vistir/backports/tempfile.py b/pipenv/vendor/vistir/backports/tempfile.py
--- a/pipenv/vendor/vistir/backports/tempfile.py
+++ b/pipenv/vendor/vistir/backports/tempfile.py
@@ -13,7 +13,7 @@
 try:
     from weakref import finalize
 except ImportError:
-    from backports.weakref import finalize
+    from pipenv.vendor.backports.weakref import finalize
 
 
 __all__ = ["finalize", "NamedTemporaryFile"]
diff --git a/pipenv/vendor/vistir/compat.py b/pipenv/vendor/vistir/compat.py
--- a/pipenv/vendor/vistir/compat.py
+++ b/pipenv/vendor/vistir/compat.py
@@ -30,7 +30,7 @@
     from pathlib2 import Path
 
 if sys.version_info < (3, 3):
-    from backports.shutil_get_terminal_size import get_terminal_size
+    from pipenv.vendor.backports.shutil_get_terminal_size import get_terminal_size
     from .backports.tempfile import NamedTemporaryFile
 else:
     from tempfile import NamedTemporaryFile
@@ -39,7 +39,7 @@
 try:
     from weakref import finalize
 except ImportError:
-    from backports.weakref import finalize
+    from pipenv.vendor.backports.weakref import finalize
 
 try:
     from functools import partialmethod


Test patch: