Closed
Description
The recent issues on upstream Pipenv caused s2i builds to always fail:
New python executable in /opt/app-root/src/.local/venvs/pipenv/bin/python3
--
| Also creating executable in /opt/app-root/src/.local/venvs/pipenv/bin/python
| Installing setuptools, pip, wheel...done.
| Collecting pipenv
| Downloading https://files.pythonhosted.org/packages/eb/64/9b2747d54f2008ac3dfe86c0b1c8ec126042726fd8a540d5208d26732701/pipenv-2018.7.1-py3-none-any.whl (5.0MB)
| Collecting virtualenv (from pipenv)
| Downloading https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB)
| Collecting certifi (from pipenv)
| Downloading https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee63644d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl (147kB)
| Collecting pip>=9.0.1 (from pipenv)
| Downloading https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl (1.3MB)
| Collecting virtualenv-clone>=0.2.5 (from pipenv)
| Downloading https://files.pythonhosted.org/packages/6d/c2/dccb5ccf599e0c5d1eea6acbd058af7a71384f9740179db67a9182a24798/virtualenv_clone-0.3.0-py2.py3-none-any.whl
| Collecting setuptools>=36.2.1 (from pipenv)
| Downloading https://files.pythonhosted.org/packages/96/06/c8ee69628191285ddddffb277bd5abdf769166e7a14b867c2a172f0175b1/setuptools-40.4.3-py2.py3-none-any.whl (569kB)
| Installing collected packages: virtualenv, certifi, pip, virtualenv-clone, setuptools, pipenv
| Found existing installation: pip 9.0.1
| Uninstalling pip-9.0.1:
| Successfully uninstalled pip-9.0.1
| Found existing installation: setuptools 28.8.0
| Uninstalling setuptools-28.8.0:
| Successfully uninstalled setuptools-28.8.0
| Successfully installed certifi-2018.8.24 pip-18.1 pipenv-2018.7.1 setuptools-40.4.3 virtualenv-16.0.0 virtualenv-clone-0.3.0
| ---> Installing dependencies via pipenv ...
| Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead.
| Installing dependencies from Pipfile.lock (c00e44)...
| Traceback (most recent call last):
| File "/opt/app-root/src/.local/bin/pipenv", line 11, in <module>
| sys.exit(cli())
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
| return self.main(*args, **kwargs)
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
| rv = self.invoke(ctx)
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
| return _process_result(sub_ctx.command.invoke(sub_ctx))
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
| return ctx.invoke(self.callback, **ctx.params)
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
| return callback(*args, **kwargs)
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/cli.py", line 435, in install
| selective_upgrade=selective_upgrade,
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/core.py", line 1943, in do_install
| pypi_mirror=pypi_mirror,
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/core.py", line 1322, in do_init
| pypi_mirror=pypi_mirror,
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/core.py", line 807, in do_install_dependencies
| pypi_mirror=pypi_mirror,
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/core.py", line 1375, in pip_install
| package_name.split('--hash')[0].split('--trusted-host')[0]
| File "/opt/app-root/src/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 704, in from_line
| line, extras = _strip_extras(line)
| TypeError: 'module' object is not callable
The upstream issue can be found at pypa/pipenv#2924 A brief summary - Pipenv relies on some logic present in pip and with a new pip release where the shared logic changed, Pipenv broke. Even though the patch to address the issue was already merged into Pipenv master today, we are still unable to build any s2i based project that is using Pipenv as a bugfix release was not not issued by upstream since Friday when this issue occurred.
As Pipenv is already packaged as an RPM it could be worth to consider adding Pipenv to the base image from Fedora repositories so s2i does not rely on the latest Pipenv that can introduce such issues.