Pipenv: 2018.11.26: pipenv gibt beim Erstellen einer virtuellen Umgebung Python-Fehler aus

Erstellt am 6. Dez. 2018  ·  30Kommentare  ·  Quelle: pypa/pipenv

Fehlerbeschreibung

Pipenv ist möglicherweise mit # 3229 verwandt und gibt beim Erstellen einer virtuellen Umgebung weiterhin Fehler aus:

$ pipenv --three
['Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/pythonz': '/usr/local/bin/pythonz'\n", '\nDuring handling of the above exception, another exception occurred:\n\n', 'Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess\n    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))\n', 'TypeError: write() takes exactly one argument (3 given)\n']
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess
    combine_stderr=combine_stderr)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess
    return subprocess.Popen(cmd, **options)
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/pythonz': '/usr/local/bin/pythonz'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1114, in invoke
    return Command.invoke(self, ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli/command.py", line 208, in cli
    clear=state.clear,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 574, in ensure_project
    pypi_mirror=pypi_mirror,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 516, in ensure_virtualenv
    ensure_python(three=three, python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 397, in ensure_python
    path_to_python = find_a_system_python(python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 360, in find_a_system_python
    python_entry = finder.find_python_version(line)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/pythonfinder.py", line 114, in find_python_version
    major=major, minor=minor, patch=patch, pre=pre, dev=dev, arch=arch, name=name
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 396, in find_python_version
    ver = next(iter(self.get_pythons(sub_finder)), None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 279, in get_pythons
    reverse=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 277, in <genexpr>
    (p for p in self._filter_paths(finder) if p.is_python),
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 251, in unnest
    for el in target:
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/mixins.py", line 121, in find_python_version
    for child in unnest(self.pythons.values())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 531, in pythons
    for path, entry in self.children.items():
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/cached_property.py", line 35, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 501, in children
    for child_key, child_val in self._gen_children():
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 493, in _gen_children
    entry = PathEntry.create(path=child, **pass_args)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 575, in create
    _new = cls(**creation_args)
  File "<attrs generated init b90d7581ea07925e94241736776cf96c889eb52c>", line 16, in __init__
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 518, in get_py_version
    py_version = PythonVersion.from_path(path=self, name=self.name)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 395, in from_path
    py_version = get_python_version(path.path.absolute().as_posix())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

Erwartetes Ergebnis

Es wurde keine Fehlerprotokollierung beim einfachen Erstellen einer virtuellen Umgebung erwartet.

Tatsächliche Ergebnis

Die Erstellung von virtualenv schlägt fehl.

Zu replizierende Schritte

$ pipenv --three

pipenv --support gibt diese Fehler ebenfalls aus und sammelt keine Supportinformationen!

Type Regression Release Blocker Vendored Dependencies

Hilfreichster Kommentar

Die aktuelle Version scheint mir sicher abgespritzt zu sein. Eine weitere vorübergehende Problemumgehung, die ich in einer früheren Ausgabe gesehen habe, bestand darin, einen python -Pfad wie folgt einzugeben:

pipenv --three --python=`which python3`

Ich mache das vorerst mit Erfolg: Grimassen:

Alle 30 Kommentare

Es scheint, dass /usr/local/bin/pythonz kein gültiger Pfad mehr ist.

Hmm. Sollte es jemals gewesen sein? Ich habe Pythonz noch nie direkt verwendet. Ich dachte, es sei nur eine Pipenv-Abhängigkeit, die bei der Installation von Pipenv verwaltet wurde.

Für Kicks habe ich gerade pipenv 2018.11.26 deinstalliert und neu installiert und habe immer noch das Problem.

Können Sie die Ausgabe von pipenv --support bereitstellen? Und um zu bestätigen, nein, es hätte nicht sein sollen

Oh nvm hat gerade deine Nachricht gesehen. Ich möchte nur bestätigen, dass sich irgendwo keine betrügerische Version von pipenv auf Ihrem Weg befindet. Können Sie which pipenv und python -m pipenv --version überprüfen

$ which pipenv
/usr/local/bin/pipenv

python -m pipenv --version No module named pipenv da sowohl Python 2 als auch Python 3 über Homebrew installiert sind und python Python 2.7 ausführt. Gemäß einer vorherigen Empfehlung hier habe ich pipenv unter Python 3 installiert. Also habe ich python3 und erhalten:

$ python3 -m pipenv --version
pipenv, version 2018.11.26

Vielen Dank!

Ah ok. Und ja, der Fehler macht Sinn. Ich werde es einfach stromaufwärts markieren und sicherstellen, dass es repariert wird

Gibt es ein Wort darüber, wann ein Fix dafür veröffentlicht wird? Ich habe dieses Problem, das mich daran hindert, die Pipenv-Anforderungen zu installieren. Ich habe @commandtabs Problemumgehung ohne solches Glück ausprobiert.

Ich kann nicht pipenv zur Arbeit überhaupt mit der aktuellen Version.

$ which pipenv
/Users/josh/.pyenv/shims/pipenv

$ python -m pipenv --version
pipenv, version 2018.11.26

Ich habe versucht, mit Python3.7 von Homebrew zu installieren, und das gleiche Problem.

Es scheint, dass es hier keine Dringlichkeit gibt oder dass es kein großes Problem ist. Vermisse ich etwas oder ist pipenv mit der aktuellen Version komplett kaputt ?

Die aktuelle Version scheint mir sicher abgespritzt zu sein. Eine weitere vorübergehende Problemumgehung, die ich in einer früheren Ausgabe gesehen habe, bestand darin, einen python -Pfad wie folgt einzugeben:

pipenv --three --python=`which python3`

Ich mache das vorerst mit Erfolg: Grimassen:

Diese Problemumgehung hat bei mir nicht funktioniert. Ich musste ein Downgrade auf 2018.10.13 und dann die Problemumgehung für diesen Thread verwenden :

pipenv install -d --python=$HOME/.pyenv/versions/3.7.1/bin/python

Soweit ich das beurteilen kann, ist pipenv seit Oktober komplett kaputt.

@techalchemy Irgendein Wort zu einem Upstream-Tag-Fix? Für die Erstellung von pipenv virtualenv sind weiterhin Problemumgehungen für den Aufruf erforderlich.

Danke ❤️

Dies war ein bisschen rau mit all den anderen Korrekturen, die integriert werden mussten, aber ich denke, CI wird jetzt erfolgreich sein und dies wird mit # 3330 behoben - entschuldigen Sie die Probleme

Ah ok. Und ja, der Fehler macht Sinn. Ich werde es einfach stromaufwärts markieren und sicherstellen, dass es repariert wird

Das Problem besteht weiterhin, jede Idee, wann dieses Update veröffentlicht wird.

Gleiches Problem hier.

Kann bestätigen, dass die Problemumgehung von @ command-tab weiterhin funktioniert.

Dies passiert definitiv immer noch mit Homebrew Pipenv und Python. Ein bisschen überrascht, dass es keinen Test gibt, um zu sehen, wie lange es dieses Problem schon gibt.

Ich kann auch bestätigen, dass dieses Problem weiterhin besteht, obwohl dieses GitHub-Problem geschlossen wurde.

Müssen die Betreuer ein neues Problem erstellen?

Gleiches Problem mit Ubuntu 18 LTS, das im Windows-Subsystem für Linux installiert ist.

Problemumgehung funktioniert bei mir.

@techalchemy Dieses Problem scheint immer noch zu bestehen. Können Sie es bitte entweder erneut öffnen oder klarstellen, dass eine neue Ausgabe erstellt werden soll?

Vielen Dank.

Gleiches Problem mit Ubuntu 18 LTS, das im Windows-Subsystem für Linux installiert ist.

hier gilt das gleiche

@techalchemy bitte nochmal schauen

Gleiches Problem hier auf den MacOs Mojave und Python 3.7

Ich auch:

  • Catalina
  • Python 3.7.

Alles funktioniert gut, wenn ich diese Zeile in meinem Pipfile auskommentiere:

[requires]

#python_version = "3.7.4"

Ich auch:

  • Catalina
  • Python 3.7.

Alles funktioniert gut, wenn ich diese Zeile in meinem Pipfile auskommentiere:

[requires]

#python_version = "3.7.4"

ahhhh das hat bei mir funktioniert, danke!

@JarredStanford @edsu
Dies funktionierte auch für mich bei WSL in VSCode (ich habe keine externe Shell ausprobiert, da dies für ein anderes Projekt gut funktioniert hat).

@ Befehlsregisterkarte
Das Hinzufügen von "--python = which python3 " hat ebenfalls funktioniert. Ich habe nicht versucht, "--three" hinzuzufügen, und es scheint für meinen Anwendungsfall / meine Version nicht erforderlich zu sein.

Nachdem ich beide Problemumgehungen erhalten hatte und sie zum Laufen gebracht hatte, entfernte ich sie und versuchte ein drittes Mal, um sicherzustellen, dass die Umgebung immer noch ein Problem verursachte (Erzähler: es war).

@ Techalchemy
Ich denke, dass dies in 3330 möglicherweise nicht "vollständig behoben" ist? Es könnte sich um ein tangentiales Problem handeln, das dieselben Symptome verursacht. In meinem Fall verwende ich WSL und frage mich, ob 'python3' und 'python3.exe', die sich beide in meinem WSL-Pfad befinden, verdächtig erscheinen.

Würden Sie es für das Beste halten, wenn ich eine neue Ausgabe öffne? Möchten Sie, dass ich zusätzliche Diagnosen durchführe oder etwas anderes?

Ich benutze wsl2 mit arclinux (manjaro)
Es scheint, dass pipenv die Python in Host-Env-Fenstern aufruft, um sie zu installieren
Also müssen wir definieren, wo die Python zu finden ist mit:
pipenv --python=<PATH_TO_PYTHON>
oder
pipenv --python=which python3

funktioniert bei mir.

Kann bestätigen, dass dies unter WSL mit Ubuntu 18.04 LTS geschieht. Es scheint, als würde pipenv nach einem Python-Interpreter suchen, anstatt den zu verwenden, unter dem er ausgeführt wird, und dabei PATH in umgekehrter Reihenfolge durchlaufen. Ich habe mehrere Python-Umgebungen installiert, und wenn ich eine manuell aus PATH entferne, findet pipenv eine andere und beschwert sich stattdessen über diese.

Ich sehe das gleiche Problem unter WSL mit Ubuntu 18.04 LTS. pipenv install --python $(which python3) funktioniert, aber wenn ich anschließend pipenv shell mache, kann es die Abhängigkeiten nicht finden, die es hätte herunterladen sollen.

Auch ich bin betroffen, mit WSL 1 und Ubuntu 18.04. Problemumgehung --python $(which python) funktioniert.

Der Grund für den letzten Teil der Ausnahme, dh dieses Bit:

  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

... liegt daran, dass der Aufruf zum Drucken eines Fehlers bei der Behandlung der ersten Ausnahme einen Fehler enthält. Dieser Fehler wurde anscheinend bereits im Januar 2019 im Master behoben - https://github.com/pypa/pipenv/commit/574fe7308d9ac81d64da954722f35c9eee0dd467#diff -a59595db75020aeb9f688d6a0b4818e6L162. Aber da die neueste Version von pipenv 2018.11.26 ist, stelle ich mir vor, dass die meisten keine feste Version haben.

Man kann es manuell patchen. Öffnen Sie /usr/local/lib/<your-python-version>/site-packages/pipenv/vendor/vistir/misc.py , navigieren Sie zu Zeile 162 und ändern Sie dies:

sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))

... dazu:

sys.stderr.write(f"Error {exc} while executing command " + " ".join(cmd._parts))

Sie erhalten jetzt einen genaueren Ausnahmebericht. In meinem Fall besteht das Problem darin, dass WSL Linux-basiertes pipenv Windows-basierte Python-Installationen erkennt und Probleme beim Ausführen hat, was offensichtlich ist:

Error [Errno 8] Exec format error: '/mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe' while executing command /mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe -c import sys; print(['Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "OSError: [Errno 8] Exec format error: '/mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe'\n"]

Für WSL-Benutzer kann das Problem meines Erachtens behoben werden, indem sichergestellt wird, dass alle Anforderungen an Ihre Python-Version in Pipfile genau mit einer Linux-basierten Python-Installation übereinstimmen, z

[requires]
python_version = "3.6.8"  # Make sure this exactly matches an installed version, or remove it.

Hoffe das hilft.

Ich bin mir nicht sicher, wie viel dies hilft, aber das Löschen des Pipfiles, das Ausführen von pipenv lock und das anschließende Einfügen des Inhalts des alten Pipfiles in das Ausführen von pipenv install funktioniert dauerhaft für mich.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen