मैं python3 के लिए एक परियोजना पोर्टिंग कर रहा हूँ और मैं चल रहा हूँ से उपप्रक्रिया बुला अमान्य है: विंडोज परOSError: [WinError 6] संभाल जब विंडोज पर एक अनपेक्षित त्रुटि आ अजगर 3.6
अजगर 3.6 पर मूल रूप से,
d:\temp\backpack\venv\myvenv_py3.6\lib\site-packages\git\cmd.py:1011: in _call_process
return self.execute(call, **exec_kwargs)
d:\temp\backpack\venv\myvenv_py3.6\lib\site-packages\git\cmd.py:732: in execute
**subprocess_kwargs
D:\temp\cpython-3.6.3\Lib\subprocess.py:611: in __init__
_cleanup()
D:\temp\cpython-3.6.3\Lib\subprocess.py:220: in _cleanup
res = inst._internal_poll(_deadstate=sys.maxsize)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <subprocess.Popen object at 0x0000000004FD53C8>
_deadstate = 9223372036854775807
_WaitForSingleObject = <built-in function WaitForSingleObject>
_WAIT_OBJECT_0 = 0, _GetExitCodeProcess = <built-in function GetExitCodeProcess>
def _internal_poll(self, _deadstate=None,
_WaitForSingleObject=_winapi.WaitForSingleObject,
_WAIT_OBJECT_0=_winapi.WAIT_OBJECT_0,
_GetExitCodeProcess=_winapi.GetExitCodeProcess):
"""Check if child process has terminated. Returns returncode
attribute.
This method is called by __del__, so it can only refer to objects
in its local scope.
"""
_log.debug('proc._internal_poll self.pid=%s self._handle=%s self.returncode=%s self=%s', self.pid, self._handle, self.returncode, self)
if self.returncode is None:
> if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
E OSError: [WinError 6] The handle is invalid
D:\temp\cpython-3.6.3\Lib\subprocess.py:1051: OSError
यह कोई फर्क नहीं पड़ता, जहां subprocess
कॉल से बनाया जा रहा है (इस परियोजना में यह GitPython
पैकेज से और plumbum
से बहुत कुछ है): हर बार एक प्रक्रिया उपप्रक्रिया साथ बनाया जा रहा है, मैं इस अपवाद है ।
यह निष्पादन इस छतरी के नीचे होता है: build script
जो venv/Scripts/coverage run -m pytest -v tests/
को आमंत्रित करता है। मेरी जीत 7 पीसी पर
- यह हमेशा :(
- गुजरता एक 7 विन आभासी मशीन पर: लेकिन मैं यह भी
venv/Scripts/pytest --cov=mypackage --cov-config .coveragerc - tests/
साथpytest-cov
की कोशिश की है प्रजनन के मामले में-
यह
- हमेशा विफल रहता है जब [
<build script>
invokesvenv/Scripts/coverage run -m pytest
] - यह हमेशा विफल रहता है जब
coverage run -m pytest
सीधे venv - से शुरू हो जाती है लेकिन यह हमेशा गुजरता है जब
pytest
virtualenv
एक जीत 10 पीसी यह हमेशा
विफल रहता होगा, कोई फर्क नहीं पड़ता अगर
- हमेशा विफल रहता है जब [
- से सीधे शुरू हो जाती है लागू, या यदि
coverage
याpytest
venv
<build script>
है पर
केवल सुराग है कि मैं अब तक मिल गया है इस StackOverflow धागे से है से सीधे लागू कर रहे हैं: https://stackoverflow.com/a/43975118 और अधिक सटीक होने के लिए, यह पहले स्वीकार किए गए उत्तर से टिप्पणियां है जो मॉड्यूल से _cleanup
विधि से संबंधित उपयोगी कुछ इंगित करती है।
इस धागे से उत्तर https://stackoverflow.com/a/40108817/501074 इस समस्या को ठीक नहीं किया गया है। –
सबप्रोसेस का उपयोग करने वाला आपका कोड वास्तव में कैसा दिखता है? –