Pipenv: RuntimeError : profondeur de récursivité maximale dépassée

Créé le 24 sept. 2017  ·  46Commentaires  ·  Source: pypa/pipenv

En essayant de convertir mon application de production, j'obtiens une erreur de récursivité :

$ 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

Il avance bien avant de planter :

$ cat Pipfile | wc -l 
     193

Tous les 46 commentaires

hum, je ne sais pas pourquoi. Vous voudrez peut-être convertir le fichier à la main - cela ne prendrait pas trop de temps. ou, divisez-le en morceaux plus petits et utilisez pipenv install -r smaller-chunk.txt .

cela peut être juste une limitation de la façon dont notre bibliothèque toml est conçue.

J'essaierais l'approche des plus petits morceaux, je la diviserais en 4 fichiers environ.

merci, je vais essayer ça.

Je l'ai divisé en 4 fichiers. Les 3 premiers ont réussi. Le 4ème a échoué avec la même erreur. J'ai essayé de diviser cela en fichiers encore plus petits, mais la même chose s'est produite.

Fondamentalement, après avoir installé un certain nombre de packages, l'installation d'un seul package supplémentaire échoue avec une erreur de récursivité. Peu importe quel paquet.

Après avoir installé un tas de paquets :

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

Ensuite, l'installation d'un autre paquet donne ceci :

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

juste par curiosité, que construisez-vous là-bas avec 201 dépendances ? (seulement vu de telles choses dans node.js jusqu'à présent ;))

C'est https://close.io. Nous n'avons pas 201 dépendances directes, mais nous utilisions l'option --no-deps pip pour obtenir plus de garantie que les versions des sous-dépendances ne changeraient pas au hasard et ne casseraient pas quelque chose de manière inattendue en production.

Après le portage sur pipenv, je pense pouvoir supprimer les sous-dépendances de Pipfile en raison de la sécurité fournie par Pipfile.lock. Cependant, je souhaite le faire dans une étape ultérieure afin d'éviter un tas de modifications de version de sous-dépendance qui seraient un changement trop important à la fois. Et mon hypothèse est que l'erreur de récursivité ici est basée sur la taille de Pipfile.lock qui ne diminuerait pas de toute façon.

Je vais voir pour revenir au deuxième analyseur aujourd'hui. Avoir votre pipfile à portée de main serait formidable .

OK v7.8.2 publié, qui revient à un autre analyseur si celui-ci échoue.

Cela devrait (espérons-le) résoudre votre problème

pour être clair, nous utilisons contoml pour tenter de préserver les commentaires dans le pipfile.

il semble cependant qu'il s'étouffe avec des fichiers volumineux, j'ai donc fait revenir le code à l'analyseur « toml » lorsque celui-ci échoue.

Fermeture, car je pense que c'est maintenant corrigé.

Confirmé de travailler avec un fichier toml de 196 lignes. ce n'était pas facile à faire.

Pour info, pipenv utilise automatiquement --no-deps, vous pourrez donc peut-être élaguer un peu ce fichier.

Pour info, j'ai réessayé sur 7.8.3 et j'obtiens la même erreur en essayant d'installer 1 paquet supplémentaire.

wc -l Pipfile
     276 Pipfile

Je vais essayer d'élaguer Pipfile des sous-dépendances.

pouvez-vous montrer l'exception?

c'est un Pipfile scandaleusement gros

peut-être que notre autre analyseur ne peut pas le gérer non plus

Oui, je vais travailler pour le rendre plus petit.

$ 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

bizarre, il devrait utiliser l'autre analyseur. Laisse-moi regarder.

essayez la v7.8.5

En essayant.

Remarque : lorsque j'exécute pipenv install -r requirements-original.txt et que le message "Découvrir les importations à partir de la base de code locale…", je suis nerveux à l'idée que cela fasse autre chose que d'installer simplement ce qui se trouve dans le fichier .txt.

il ne devrait pas le faire à moins que -r ne soit pas donné.

corrigé dans la v7.8.6 !

Sur 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

J'ai aussi essayé avec --sequential et ça n'a rien changé.

(Je vais quand même essayer d'élaguer dans un fichier plus petit, je ne l'ai pas encore fait)

c'est étrange.

pouvez-vous s'il vous plaît partager en privé votre pipfile avec moi ?

c'est une mine d'or d'edgecases

nous avons confirmé que nous avions corrigé le bogue de toml, oui !

on dirait que vous vous amusez :)

$ pipenv install --skip-lock fonctionne pour moi, jusqu'à présent...

J'utilise MacOS. Tu es sur quel OS ?

Même

cela pourrait être lié à git... je suis surpris que --sequential n'ait pas résolu votre problème.

Oui, j'ai réussi ici (à part l'échec de la compilation de lxml)

À ce stade, je suis plus enthousiaste à l'idée d'élaguer le fichier en premier de toute façon. Bien sûr, il y a aussi des bugs avec ça :)

Je travaille donc en le révisant manuellement.

Avez-vous essayé pipenv check --unused ?

Pas encore. C'est juste une enveloppe autour de pipreqs, n'est-ce pas ? (Et aurait le même bug). J'ai pensé que je commencerais par là avec juste mon fichier d'exigences, pour des changements plus simples d'abord.

ouais c'est un wrapper autour des demandes de pip. vous donnera probablement beaucoup de faux positifs, mais ce serait un point de départ.

Impossible de se reproduire, même avec 4+ deps git.

J'ai exécuté git gc , pipenv --rm , j'ai supprimé un tas de dépendances de mon fichier requirements.txt et j'ai exécuté rm Pipfile Pipfile.lock . Ensuite, j'ai couru pipenv install . Cela m'a encore donné OSError: [Errno 24] Too many open files .

Cependant, j'ai ensuite couru pipenv install --sequential et cette fois cela a fonctionné ! Je ne sais pas vraiment à quoi l'astuce spécifique était comparée avant, mais c'est cool de la voir fonctionner !!

Pour info, si vous rencontrez à nouveau cette erreur, vous pouvez vérifier la limite de descripteur de fichier par processus avec ulimit -n , puis déterminer le nombre de descripteurs de fichier que pipenv utilise réellement comme suit (par exemple, avec du poisson comme shell) :

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

Vous pouvez exécuter sans wc -l pour les poignées réelles si vous voulez avoir une meilleure idée de ce qui se passe. Je suppose qu'il s'agit d'une résolution de dépendance circulaire relative aux téléchargements simultanés qui créera essentiellement des descripteurs de fichiers infinis jusqu'à ce qu'elle atteigne le plafond ulimit . Essentiellement, cela signifierait que ulimit fait son travail.

Il serait difficile de dépanner quelque chose comme ça, mais je serais curieux de voir le résultat si cela se reproduit ou si vous pouvez reproduire.

Je rencontre ce problème sur l'une de mes machines Windows. Cela fonctionne sur Ubuntu et un autre Windows. Sur Windows, j'ai le problème, je lance pipenv avec py -m pipenv install . Sur Ubuntu, j'utilise simplement pipenv install .

Cette page vous a été utile?
0 / 5 - 0 notes