Pipenv: RuntimeError: maximale Rekursionstiefe überschritten

Erstellt am 24. Sept. 2017  ·  46Kommentare  ·  Quelle: pypa/pipenv

Beim Versuch, meine Produktions-App zu konvertieren, erhalte ich einen Rekursionsfehler:

$ cat requirements.txt | wc -l
     201

$ pipenv lock   
Requirements.txt found, instead of Pipfile! Converting…
Traceback (most recent call last):
  File "/Users/philfreo/Library/Python/2.7/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/cli.py", line 1787, in lock
    ensure_project(three=three, python=python)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/cli.py", line 577, in ensure_project
    ensure_pipfile(validate=validate)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/cli.py", line 291, in ensure_pipfile
    import_requirements()
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/cli.py", line 251, in import_requirements
    project.add_package_to_pipfile(str(package.req), dev=dev)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/project.py", line 413, in add_package_to_pipfile
    p = self._pipfile
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/project.py", line 212, in _pipfile
    pfile = self.parsed_pipfile
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/project.py", line 207, in parsed_pipfile
    return contoml.loads(contents)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/contoml/__init__.py", line 15, in loads
    elements = parse_tokens(tokens)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/parser/__init__.py", line 17, in parse_tokens
    return _parse_token_stream(TokenStream(tokens))
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/parser/__init__.py", line 29, in _parse_token_stream
    elements, pending = toml_file_elements(token_stream)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()

.......... middle of very large stack trace omitted (lmk if you want the full version) ......

    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 98, in more
    c = capture_from(ts).find(token(token_type)).and_find(zero_or_more_tokens(token_type))
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 58, in factory
    raise ParsingError('Expected a token of type {}'.format(token_type))
  File "/Users/philfreo/Library/Python/2.7/lib/python/site-packages/pipenv/patched/prettytoml/tokens/__init__.py", line 30, in __repr__
    return "{}-{}".format(self.priority, self._name)
RuntimeError: maximum recursion depth exceeded

Es macht einige gute Fortschritte, bevor es abstürzt:

$ cat Pipfile | wc -l 
     193

Alle 46 Kommentare

hm, ich bin mir nicht sicher warum. Vielleicht möchten Sie die Datei von Hand konvertieren – es würde nicht allzu lange dauern. oder brechen Sie es in kleinere Stücke auf und verwenden Sie pipenv install -r smaller-chunk.txt .

Dies kann nur eine Einschränkung des Designs unserer toml-Bibliothek sein.

Ich würde den kleineren Ansatz versuchen, ihn in 4 Dateien oder so aufteilen.

thx, werde das versuchen.

Ich habe es auf 4 Dateien aufgeteilt. Die ersten 3 waren erfolgreich. Der vierte ist mit dem gleichen Fehler fehlgeschlagen. Ich habe versucht, das in noch kleinere Dateien aufzuteilen, aber das gleiche passierte.

Grundsätzlich schlägt nach der Installation einer bestimmten Anzahl von Paketen die Installation von noch 1 weiteren Paket mit einem Rekursionsfehler fehl. Egal welches Paket.

Nachdem Sie eine Reihe von Paketen installiert haben:

wc -l requirements-original.txt Pipfile Pipfile.lock
     201 requirements-original.txt
     193 Pipfile
    1436 Pipfile.lock

Wenn Sie dann ein weiteres Paket installieren, erhalten Sie Folgendes:

pipenv install python-baseconv==1.2.0
Traceback (most recent call last):
  File "/Users/philfreo/.local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 1593, in install
    ensure_project(three=three, python=python, system=system, warn=True)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 552, in ensure_project
    if project.required_python_version:
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/project.py", line 59, in required_python_version
    required = self.parsed_pipfile.get('requires', {}).get('python_full_version')
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/project.py", line 213, in parsed_pipfile
    return contoml.loads(contents)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/contoml/__init__.py", line 15, in loads
    elements = parse_tokens(tokens)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/__init__.py", line 17, in parse_tokens
    return _parse_token_stream(TokenStream(tokens))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/__init__.py", line 29, in _parse_token_stream
    elements, pending = toml_file_elements(token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 365, in file_entry_element
    or_find(table_body_element)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 79, in or_find
    return Capturer(self._token_stream).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 349, in table_body_element
    captured = capture_from(token_stream).find(table_body_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 341, in table_body_elements
    or_find(two).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 79, in or_find
    return Capturer(self._token_stream).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 336, in two
    and_find(table_body_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 340, in table_body_elements
    find(one).\

...... repeating pattern .....

  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 79, in or_find
    return Capturer(self._token_stream).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 335, in two
    find(empty_line_elements).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 359, in empty_line_elements
    captured = capture_from(token_stream).find(empty_line_tokens)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 354, in empty_line_tokens
    c1 = capture_from(ts1).find(space_element).and_find(line_terminator_element)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 115, in space_element
    captured = capture_from(token_stream).find(zero_or_more_tokens(tokens.TYPE_WHITESPACE))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 108, in factory
    captured = capture_from(token_stream).find(more).or_find(two).or_find(zero)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 98, in more
    c = capture_from(ts).find(token(token_type)).and_find(zero_or_more_tokens(token_type))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 113, in capture_from
    return Capturer(token_stream)
RuntimeError: maximum recursion depth exceeded

nur aus Neugier, was baust du da mit 201 Abhängigkeiten? (habe solche Dinge bisher nur in node.js gesehen ;))

Es ist https://close.io. Wir haben keine 201 direkte Abhängigkeiten, aber wir haben die --no-deps Option von pip verwendet, um eine größere Garantie dafür zu bekommen, dass sich die Unterabhängigkeitsversionen nicht zufällig bei uns ändern und etwas unerwartet in der Produktion kaputt geht.

Nach der Portierung auf pipenv erwarte ich, dass ich die Unterabhängigkeiten von Pipfile aufgrund der Sicherheit von Pipfile.lock entfernen kann. Ich möchte dies jedoch als nachfolgenden Schritt tun, um eine Reihe von Unebenheiten in der Unterabhängigkeitsversion zu vermeiden, die eine zu große Änderung auf einmal darstellen würden. Und meine Annahme ist, dass der Rekursionsfehler hier auf der Größe von Pipfile.lock basiert, die sowieso nicht schrumpfen würde.

Ich werde sehen, ob ich heute auf den zweiten Parser zurückgreifen kann. Es wäre großartig, Ihre Pipfile zur Hand zu haben.

okay v7.8.2 veröffentlicht, der auf einen anderen Parser zurückgreift, wenn dieser fehlschlägt.

Dies sollte (hoffentlich) Ihr Problem beheben

Um das klarzustellen, verwenden wir contoml, um Kommentare in der Pipfile zu erhalten.

Es scheint jedoch bei großen Dateien zu ersticken, also habe ich den Code auf den 'toml'-Parser zurückgegriffen, wenn dieser fehlschlägt.

Schließen, da ich glaube, dass dies jetzt behoben ist.

Bestätigte Arbeit mit einer Toml-Datei mit 196 Zeilen. das war nicht leicht zu machen.

Zu Ihrer Information, pipenv verwendet automatisch --no-deps, sodass Sie diese Datei möglicherweise ein wenig bereinigen können.

Zu Ihrer Information, ich habe es mit 7.8.3 erneut versucht und erhalte die gleiche Fehlermeldung, wenn ich versuche, ein weiteres Paket zu installieren.

wc -l Pipfile
     276 Pipfile

Ich werde versuchen, Pipfile von Unterabhängigkeiten zu bereinigen.

kannst du die ausnahme zeigen?

das ist ein unverschämt großes Pipfile

vielleicht kommt unser anderer Parser auch nicht damit zurecht

Ja, ich werde daran arbeiten, es kleiner zu machen.

$ pipenv install zbase32==1.1.5
Traceback (most recent call last):
  File "/Users/philfreo/.local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 1614, in install
    ensure_project(three=three, python=python, system=system, warn=True)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 570, in ensure_project
    if project.required_python_version:
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/project.py", line 59, in required_python_version
    required = self.parsed_pipfile.get('requires', {}).get('python_full_version')
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/project.py", line 211, in parsed_pipfile
    return contoml.loads(toml.dumps(data, preserve=True))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/contoml/__init__.py", line 15, in loads
    elements = parse_tokens(tokens)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/__init__.py", line 17, in parse_tokens
    return _parse_token_stream(TokenStream(tokens))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/__init__.py", line 29, in _parse_token_stream
    elements, pending = toml_file_elements(token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 375, in toml_file_elements
    captured = capture_from(token_stream).find(one).or_find(file_entry_element).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 372, in one
    c1 = capture_from(ts1).find(file_entry_element).and_find(toml_file_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)

........... more .........


  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 340, in table_body_elements
    find(one).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 330, in one
    and_find(table_body_elements)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 340, in table_body_elements
    find(one).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 329, in one
    find(key_value_pair).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 317, in key_value_pair
    and_find(value).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 202, in value
    or_find(inline_table_element)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 79, in or_find
    return Capturer(self._token_stream).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 303, in inline_table_element
    and_find(internal).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 297, in internal
    c = capture_from(ts).find(one).or_find(key_value).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 294, in one
    and_find(internal)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 297, in internal
    c = capture_from(ts).find(one).or_find(key_value).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 294, in one
    and_find(internal)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 297, in internal
    c = capture_from(ts).find(one).or_find(key_value).or_empty()
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 290, in one
    find(key_value).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 281, in key_value
    and_find(space_element).\
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 115, in space_element
    captured = capture_from(token_stream).find(zero_or_more_tokens(tokens.TYPE_WHITESPACE))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 108, in factory
    captured = capture_from(token_stream).find(more).or_find(two).or_find(zero)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 98, in more
    c = capture_from(ts).find(token(token_type)).and_find(zero_or_more_tokens(token_type))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 109, in and_find
    return Capturer(self.pending_tokens, self.value()).find(finder)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 108, in factory
    captured = capture_from(token_stream).find(more).or_find(two).or_find(zero)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 98, in more
    c = capture_from(ts).find(token(token_type)).and_find(zero_or_more_tokens(token_type))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/recdesc.py", line 33, in find
    element, pending_ts = finder(self._token_stream)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/patched/prettytoml/parser/parser.py", line 58, in factory
    raise ParsingError('Expected a token of type {}'.format(token_type))
RuntimeError: maximum recursion depth exceeded

Seltsam, es sollte den anderen Parser verwenden. Lass mich mal sehen.

versuch es mit v7.8.5

Versuchen.

Randbemerkung: Wenn ich pipenv install -r requirements-original.txt ausführe und dann "Discovering imports from local codebase..." sagt, werde ich nervös, dass es etwas _anderes_ macht, als nur die .txt-Datei zu installieren.

Es sollte nicht so sein, es sei denn, -r wird nicht angegeben.

in v7.8.6 behoben!

Am 7.8.5:

$ pipenv install -r requirements-original.txt
...
Installing dependencies from Pipfile.lock…
Traceback (most recent call last):▉▉▉▉ 31/201 — 00:00:17
  File "/Users/philfreo/.local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 1663, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 1230, in do_init
    skip_lock=skip_lock, verbose=verbose, concurrent=concurrent)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 788, in do_install_dependencies
    index=index
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/cli.py", line 1303, in pip_install
    c = delegator.run(pip_command, block=block)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/delegator.py", line 257, in run
    c.run(block=block, binary=binary)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/delegator.py", line 149, in run
    s = PopenSpawn(self._popen_args, **pexpect_kwargs)
  File "/Users/philfreo/.local/venvs/pipenv/lib/python2.7/site-packages/pipenv/vendor/pexpect/popen_spawn.py", line 45, in __init__
    self.proc = subprocess.Popen(cmd, **kwargs)
  File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1227, in _execute_child
    errpipe_read, errpipe_write = self.pipe_cloexec()
  File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1179, in pipe_cloexec
    r, w = os.pipe()
OSError: [Errno 24] Too many open files

Ich habe es auch mit --sequential versucht und das hat nichts geändert.

(Ich werde immer noch versuchen, auf eine kleinere Datei zu beschneiden, habe es noch nicht getan)

das ist komisch.

kannst du mir bitte privat deine pipfile mitteilen?

Dies ist eine Goldmine von Edgecases

Wir haben jedoch bestätigt, dass wir den Toml-Fehler behoben haben, yay!

Sieht aus, als hättest du Spaß :)

$ pipenv install --skip-lock funktioniert bei mir bisher...

Ich verwende MacOS. Welches Betriebssystem hast du?

Dasselbe

es könnte mit git zusammenhängen... ich bin überrascht --sequential hat dein Problem nicht behoben.

Ja, hier drüben gelungen (abgesehen davon, dass lxml nicht erstellt werden kann)

An dieser Stelle freue ich mich sowieso mehr darauf, die Datei zuerst zu bereinigen. Das hat natürlich auch Fehler :)

Also arbeite ich daran, es manuell zu überprüfen.

Hast du pipenv check --unused probiert?

Noch nicht. Es ist nur ein Wrapper um Pipreqs, oder? (Und hätte den gleichen Fehler). Ich dachte, ich würde dort nur mit meiner Anforderungsdatei beginnen, für einfachere Änderungen zuerst.

ja, es ist ein Wrapper um Pip-Anforderungen. wird Ihnen wahrscheinlich viele falsch positive Ergebnisse liefern, aber es wäre ein Anfang.

Kann nicht reproduziert werden, selbst mit 4+ Git-Deps.

Ich habe git gc , pipenv --rm , eine Reihe von Abhängigkeiten aus meiner Datei Requirements.txt entfernt und rm Pipfile Pipfile.lock . Dann lief ich pipenv install . Es gab mir wieder OSError: [Errno 24] Too many open files .

Allerdings habe ich dann pipenv install --sequential und dieses Mal hat es funktioniert! Ich bin mir nicht wirklich sicher, womit der spezifische Trick zuvor verglichen wurde, aber cool zu sehen, wie er funktioniert !!

Zu Ihrer Information, wenn dieser Fehler erneut auftritt, können Sie das Datei-Handle-Limit pro Prozess mit ulimit -n überprüfen und dann wie folgt bestimmen, wie viele Datei-Handles pipenv tatsächlich verwendet (z. B. mit Fisch als Shell):

for pid in ( ps aux | grep -i pipenv | awk '{ print $2 }')
    lsof -p $pid
end | wc -l

Sie können ohne wc -l für die eigentlichen Handles laufen, wenn Sie eine bessere Vorstellung davon bekommen möchten, was passiert. Ich vermute, es handelt sich um eine zirkuläre Abhängigkeitsauflösung in Bezug auf gleichzeitige Downloads, die im Grunde unendliche Dateihandles erstellt, bis sie die Obergrenze von ulimit . Im Wesentlichen würde das bedeuten, dass ulimit seinen Job macht.

Es wäre schwierig, so etwas zu beheben, aber ich wäre neugierig, die Ausgabe davon zu sehen, wenn es wieder passiert oder ob Sie reproduzieren können.

Ich stoße auf dieses Problem auf einem meiner Windows-Rechner. Es funktioniert auf Ubuntu und einem anderen Windows. Unter Windows habe ich das Problem, dass ich pipenv mit py -m pipenv install ausführe. Unter Ubuntu verwende ich einfach pipenv install .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen