Repository: pypa/pipenv
Issue: Unable to install package in container

I was troubleshooting an opened bug (https://github.com/pypa/pipenv/issues/1639) that I seem to have run into. In trying to reproduce it, it seems like i bumped into another issue.

This looks similar to the closed https://github.com/pypa/pipenv/issues/1441 issue, however, the command `virtualenv --python=python3 myenv` did not error out as anticipated in the comments.

##### Expected result

I expected to see a `Pipfile` and `Pipfile.lock` in the `/tmp/test1` directory.

##### Actual result

Saw the strack trace above.

##### Steps to replicate

```
 saviles  ~  1  docker run --rm -ti fedora:27 /bin/bash
[root@0958ee759ab3 /]# dnf install -qy which
install-info: No such file or directory for /usr/share/info/which.info.gz
[root@0958ee759ab3 /]# pip3 install --user pipenv
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting pipenv
  Downloading pipenv-11.2.0.tar.gz (4.1MB)
    100% |████████████████████████████████| 4.1MB 412kB/s 
Collecting setuptools>=36.2.1 (from pipenv)
  Downloading setuptools-38.5.2-py2.py3-none-any.whl (490kB)
    100% |████████████████████████████████| 491kB 2.3MB/s 
Collecting virtualenv (from pipenv)
  Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 810kB/s 
Collecting virtualenv-clone>=0.2.5 (from pipenv)
  Downloading virtualenv_clone-0.3.0-py2.py3-none-any.whl
Installing collected packages: setuptools, virtualenv, virtualenv-clone, pipenv
  Running setup.py install for pipenv ... done
Successfully installed pipenv-11.2.0 setuptools-38.5.2 virtualenv-15.1.0 virtualenv-clone-0.3.0
[root@0958ee759ab3 /]# mkdir /tmp/test1
[root@0958ee759ab3 /]# cd /tmp/test1
[root@0958ee759ab3 test1]# python3 -m pipenv install requests
Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Creating a virtualenv for this project…
⠋Using base prefix '/usr'
New python executable in /root/.local/share/virtualenvs/test1-MiVIN7Yf/bin/python3
Also creating executable in /root/.local/share/virtualenvs/test1-MiVIN7Yf/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: 
Creating a Pipfile for this project…
Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/root/.local/lib/python3.6/site-packages/pipenv/__main__.py", line 4, in <module>
    cli()
  File "/root/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/root/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/root/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/root/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/root/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/root/.local/lib/python3.6/site-packages/pipenv/cli.py", line 197, in install
    selective_upgrade=selective_upgrade
  File "/root/.local/lib/python3.6/site-packages/pipenv/core.py", line 1767, in do_install
    ensure_project(three=three, python=python, system=system, warn=True, deploy=deploy, skip_requirements=skip_requirements)
  File "/root/.local/lib/python3.6/site-packages/pipenv/core.py", line 688, in ensure_project
    ensure_pipfile(validate=validate, skip_requirements=skip_requirements)
  File "/root/.local/lib/python3.6/site-packages/pipenv/core.py", line 341, in ensure_pipfile
    project.create_pipfile(python=python)
  File "/root/.local/lib/python3.6/site-packages/pipenv/project.py", line 439, in create_pipfile
    data[u'requires'] = {'python_version': python_version(self.which('python'))[:len('2.7')]}
TypeError: 'NoneType' object is not subscriptable
```

[root@0958ee759ab3 test1]# python3 -m pipenv.help            
Pipenv version: `'11.2.0'`

Pipenv location: `'/root/.local/lib/python3.6/site-packages/pipenv'`

Python location: `'/usr/bin/python3'`

Other Python installations in `PATH`:

  - `3.6`: `/usr/bin/python3.6m`
  - `3.6`: `/usr/bin/python3.6`
  - `3.6`: `/bin/python3.6`

  - `3.6.2`: `/usr/bin/python3`
  - `3.6.2`: `/bin/python3`

PEP 508 Information:

```
{'implementation_name': 'cpython',
 'implementation_version': '3.6.2',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '4.15.6-300.fc27.x86_64',
 'platform_system': 'Linux',
 'platform_version': '#1 SMP Mon Feb 26 18:43:03 UTC 2018',
 'python_full_version': '3.6.2',
 'python_version': '3.6',
 'sys_platform': 'linux'}
```

System environment variables:

  - `LS_COLORS`
  - `HOSTNAME`
  - `PWD`
  - `HOME`
  - `FBR`
  - `DISTTAG`
  - `FGC`
  - `TERM`
  - `SHLVL`
  - `PATH`
  - `_`
  - `OLDPWD`
  - `LC_CTYPE`
  - `PIP_PYTHON_PATH`

Pipenv–specific environment variables:


Debug–specific environment variables:

  - `PATH`: `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`
  - `PWD`: `/tmp/test1`


---------------------------

Contents of `Pipfile` ('/tmp/test1/Pipfile'):

```toml

```
```
[root@0958ee759ab3 test1]# envname
bash: envname: command not found
[root@0958ee759ab3 test1]# virtualenv --python=python3 myenv
bash: virtualenv: command not found
[root@0958ee759ab3 test1]# python3 -m virtualenv --python=python3 myenv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /tmp/test1/myenv/bin/python3
Also creating executable in /tmp/test1/myenv/bin/python
Installing setuptools, pip, wheel...done.
[root@0958ee759ab3 test1]# ls
Pipfile  myenv
[root@0958ee759ab3 test1]# 
```
(Edit: Formatting)

Changed files:
pipenv/project.py

diff --git a/pipenv/project.py b/pipenv/project.py
index 1b30e044..e14f93d3 100644
--- a/pipenv/project.py
+++ b/pipenv/project.py
@@ -176,7 +176,7 @@ class Project(object):
 
         # The user wants the virtualenv in the project.
         if not PIPENV_VENV_IN_PROJECT:
-            c = delegator.run('pewtwo dir "{0}"'.format(self.virtualenv_name))
+            c = delegator.run('{0} -m pipenv.pew dir "{1}"'.format(sys.executable, self.virtualenv_name))
             loc = c.out.strip()
         # Default mode.
         else:
@@ -436,7 +436,7 @@ class Project(object):
         }
 
         # Default requires.
-        required_python = python if python else self.which('python', self.virtualenv_location)
+        required_python = python or self.which('python', self.virtualenv_location)
         data[u'requires'] = {'python_version': python_version(required_python)[:len('2.7')]}
 
         self.write_toml(data, 'Pipfile')