Skip to content

2018.11.14 regression: pipenv lock -r > ... creates corrupted requirements file  #3239

@Zebradil

Description

@Zebradil

Issue description

I'm trying to re-build an image from the following Dockerfile:

FROM python:3.6-alpine
WORKDIR /opt/app
RUN pip install pipenv
COPY Pipfile .
RUN pipenv lock -r > requirements.txt; pip install -U -r requirements.txt

and getting error on the last step.

Expected result

pip install packages from the requirements.txt successfully.

Actual result

Sending build context to Docker daemon  8.192kB
Step 1/5 : FROM python:3.6-alpine
 ---> 1d981af1e3b4
Step 2/5 : WORKDIR /opt/app
 ---> Using cache
 ---> 1f6e844884d3
Step 3/5 : RUN pip install pipenv
 ---> Using cache
 ---> fe80c45921ee
Step 4/5 : COPY Pipfile .
 ---> 1410d77cb800
Step 5/5 : RUN pipenv lock -r > requirements.txt; pip install -U -r requirements.txt
 ---> Running in 837048256df0
Creating a virtualenv for this project…
Pipfile: /opt/app/Pipfile
Using /usr/local/bin/python (3.6.7) to create virtualenv…
Already using interpreter /usr/local/bin/python
Using base prefix '/usr/local'
New python executable in /root/.local/share/virtualenvs/app-ueEJiAOq/bin/python
Installing setuptools, pip, wheel...
done.
Virtualenv location: /root/.local/share/virtualenvs/app-ueEJiAOq
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (8407de)!
Invalid requirement: '⠋ Running..'
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/packaging/requirements.py", line 93, in __init__
    req = REQUIREMENT.parseString(requirement_string)
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1654, in parseString
    raise exc
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1644, in parseString
    loc, tokens = self._parse( instring, 0 )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1402, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 3417, in parseImpl
    loc, exprtokens = e._parse( instring, loc, doActions )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1402, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 3739, in parseImpl
    return self.expr._parse( instring, loc, doActions, callPreParse=False )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1402, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 3400, in parseImpl
    loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1406, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 2711, in parseImpl
    raise ParseException(instring, loc, self.errmsg, self)
pip._vendor.pyparsing.ParseException: Expected W:(abcd...) (at char 0), (line:1, col:1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/pip/_internal/req/constructors.py", line 253, in install_req_from_line
    req = Requirement(req)
  File "/usr/local/lib/python3.6/site-packages/pip/_vendor/packaging/requirements.py", line 96, in __init__
    requirement_string[e.loc:e.loc + 8], e.msg
pip._vendor.packaging.requirements.InvalidRequirement: Parse error at "'⠋ Runnin'": Expected W:(abcd...)

The command '/bin/sh -c pipenv lock -r > requirements.txt; pip install -U -r requirements.txt' returned a non-zero code: 1

Steps to replicate

  1. Create Dockerfile with the contents from the above
  2. Create Pipfile with the following content:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
pylint = "*"

[dev-packages]

[requires]
python_version = "3.6"
  1. Run docker build -t pipenv-test .

docker run python:3.6-alpine ash -c 'pip install pipenv; pipenv --support' produces:

$ pipenv --support

Pipenv version: '2018.11.14'

Pipenv location: '/usr/local/lib/python3.6/site-packages/pipenv'

Python location: '/usr/local/bin/python'

Python installations found:

  • 3.6.7: /usr/local/bin/python
  • 3.6.7: /usr/local/bin/python3.6m

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.6.7',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '4.9.93-boot2docker',
 'platform_system': 'Linux',
 'platform_version': '#1 SMP Thu Jul 19 18:29:50 UTC 2018',
 'python_full_version': '3.6.7',
 'python_version': '3.6',
 'sys_platform': 'linux'}

System environment variables:

  • HOSTNAME
  • PYTHON_PIP_VERSION
  • SHLVL
  • HOME
  • GPG_KEY
  • PATH
  • LANG
  • PYTHON_VERSION
  • PWD
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • PIP_SHIMS_BASE_MODULE
  • PIP_PYTHON_PATH
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

Debug–specific environment variables:

  • PATH: /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • LANG: C.UTF-8
  • PWD: /

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions