Ich portiere ein Projekt nach Python3 und es tritt ein unerwarteter Fehler unter Windows auf:
Grundsätzlich unter Python 3.6 unter Windows, jedes Mal, wenn ein Prozess mit Subprozess erstellt wird, habe ich diese Ausnahme:
%Vor% Es spielt keine Rolle, wo der subprocess
-Aufruf erstellt wird (in diesem Projekt ist es eine Menge aus dem GitPython
-Paket und aus plumbum
).
Diese Ausführung erfolgt unter diesem Dach: build script
, das venv/Scripts/coverage run -m pytest -v tests/
aufruft. Aber ich habe auch probiert pytest-cov
mit venv/Scripts/pytest --cov=mypackage --cov-config .coveragerc - tests/
In Bezug auf die Reproduktion:
<build script>
ruft venv/Scripts/coverage run -m pytest
] coverage run -m pytest
direkt vom vent pytest
direkt vom virtualenv <build script>
aufgerufen wird, oder ob coverage
oder pytest
direkt vom venv Der einzige Hinweis, den ich bisher bekommen habe, stammt von diesem StackOverflow-Thread: Ссылка
Genauer gesagt sind es die Kommentare aus der ersten akzeptierten Antwort, die auf etwas Nützliches im Zusammenhang mit der _cleanup
-Methode aus dem subprocess
-Modul verweisen.
Nach ein bisschen Pause fand ich schnell den Grund dafür.
Dies war wegen der Verwendung von GitPython
im Projekt, die git.Repo.close()
nicht aufgerufen hat oder git.Repo
als Kontextmanager verwendet hat.
Es gibt eine Warnung darüber in der Readme von GitPython
.
Es war hilfreich, die Anmeldung in subprocess
s _internal_poll
method hinzuzufügen, um zu wissen, welcher Prozess ( args
) der Schuldige ist. Für GitPython
war es git cat-file
...
Tags und Links python python-3.x subprocess