Pipenv produces traceback error on running "pipenv shell" after new install
On Elementary OS 0.4.1, under a fresh install of pip (9.0.1) from the Ubuntu repository, running "pipenv shell" in an empty folder produced this:
```
kim@kimberly-whom-death-forgot:~$ pipenv shell
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.5/dist-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.5/dist-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.5/dist-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.5/dist-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pipenv/cli.py", line 1785, in shell
    load_dot_env()
  File "/usr/local/lib/python3.5/dist-packages/pipenv/cli.py", line 117, in load_dot_env
    denv = dotenv.find_dotenv(os.sep.join([project.project_directory, '.env']))
  File "/usr/local/lib/python3.5/dist-packages/pipenv/project.py", line 62, in project_directory
    return os.path.abspath(os.path.join(self.pipfile_location, os.pardir))
  File "/usr/lib/python3.5/posixpath.py", line 89, in join
    genericpath._check_arg_types('join', a, *p)
  File "/usr/lib/python3.5/genericpath.py", line 143, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'NoneType'

```

I expected it to install a default virtual environment, and would have preferred an error message to a stack trace.  I was able to explicitly create the environment using "pipenv install" and then start it with "pipenv shell" but I believe on another system I was able to automatically initially set up an environment with "pipenv shell."
diff --git a/pipenv/cli.py b/pipenv/cli.py
index c6ac0ba4..824159bf 100644
--- a/pipenv/cli.py
+++ b/pipenv/cli.py
@@ -1674,9 +1674,6 @@ def lock(three=None, python=False, verbose=False, requirements=False, clear=Fals
 
 def do_shell(three=None, python=False, compat=False, shell_args=None):
 
-    # Ensure that virtualenv is available.
-    ensure_project(three=three, python=python, validate=False)
-
     # Set an environment variable, so we know we're in the environment.
     os.environ['PIPENV_ACTIVE'] = '1'
 
@@ -1781,6 +1778,9 @@ def shell(three=None, python=False, compat=False, shell_args=None, anyway=False)
 
             sys.exit(1)
 
+    # Ensure that virtualenv is available.
+    ensure_project(three=three, python=python, validate=False)
+
     # Load .env file.
     load_dot_env()
 
['pipenv/cli.py']