ipython / ipython/ipykernel

subprocess stdout capture does not seem to work on Windows

未关闭
#882 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
734
派生
412
平均合并
1 天 5 小时
30 天内合并 PR
8

描述

ipykernel is capturing stdout from subprocesses since ipykernel 6.0.0 according to the [changelog](https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md#600).

On Windows it does not seem like the output of subprocesses is correctly captured. Here is a snippet to reproduce:

This came up in https://github.com/scikit-learn/scikit-learn/issues/22849#issuecomment-1068947522.

```py
from concurrent.futures import ProcessPoolExecutor

# write local module since on Windows you can not use interactively defined functions in ProcessPoolExecutor
with open('func.py', 'w') as f:
f.write('def func(arg): print("from subprocess, arg:", arg)')

from func import func

executor = ProcessPoolExecutor(max_workers=2)
future = executor.submit(func, 1)
future.result()
```

On Linux (output from the subprocess is visible)
![image](https://user-images.githubusercontent.com/1680079/158564018-78b17046-378a-42a5-a9f2-f316305b7c84.png)

On Windows (no output from the subprocess):
![image](https://user-images.githubusercontent.com/1680079/158564260-691eeef3-b8e3-4181-9e79-8e15de83f593.png)

Windows environment details

```
# packages in environment at C:\Users\lesteve\mambaforge\envs\test:
#
# Name Version Build Channel
argon2-cffi 21.3.0 pyhd8ed1ab_0 conda-forge
argon2-cffi-bindings 21.2.0 py310he2412df_1 conda-forge
asttokens 2.0.5 pyhd8ed1ab_0 conda-forge
attrs 21.4.0 pyhd8ed1ab_0 conda-forge
backcall 0.2.0 pyh9f0ad1d_0 conda-forge
backports 1.0 py_2 conda-forge
backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge
beautifulsoup4 4.10.0 pyha770c72_0 conda-forge
bleach 4.1.0 pyhd8ed1ab_0 conda-forge
bzip2 1.0.8 h8ffe710_4 conda-forge
ca-certificates 2021.10.8 h5b45459_0 conda-forge
cffi 1.15.0 py310hcbf9ad4_0 conda-forge
colorama 0.4.4 pyh9f0ad1d_0 conda-forge
debugpy 1.5.1 py310h8a704f9_0 conda-forge
decorator 5.1.1 pyhd8ed1ab_0 conda-forge
defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge
entrypoints 0.4 pyhd8ed1ab_0 conda-forge
executing 0.8.3 pyhd8ed1ab_0 conda-forge
flit-core 3.7.1 pyhd8ed1ab_0 conda-forge
icu 68.2 h0e60522_0 conda-forge
importlib-metadata 4.11.3 py310h5588dad_0 conda-forge
importlib_resources 5.4.0 pyhd8ed1ab_0 conda-forge
ipykernel 6.9.2 py310hbbfc1a7_0 conda-forge
ipython 8.1.1 py310h5588dad_0 conda-forge
ipython_genutils 0.2.0 py_1 conda-forge
ipywidgets 7.6.5 pyhd8ed1ab_0 conda-forge
jedi 0.18.1 py310h5588dad_0 conda-forge
jinja2 3.0.3 pyhd8ed1ab_0 conda-forge
jpeg 9e h8ffe710_0 conda-forge
jsonschema 4.4.0 pyhd8ed1ab_0 conda-forge
jupyter 1.0.0 py310h5588dad_7 conda-forge
jupyter_client 7.1.2 pyhd8ed1ab_0 conda-forge
jupyter_console 6.4.3 pyhd8ed1ab_0 conda-forge
jupyter_core 4.9.2 py310h5588dad_0 conda-forge
jupyterlab_pygments 0.1.2 pyh9f0ad1d_0 conda-forge
jupyterlab_widgets 1.0.2 pyhd8ed1ab_0 conda-forge
libclang 11.1.0 default_h5c34c98_1 conda-forge
libffi 3.4.2 h8ffe710_5 conda-forge
libpng 1.6.37 h1d00b33_2 conda-forge
libsodium 1.0.18 h8d14728_1 conda-forge
libzlib 1.2.11 h8ffe710_1013 conda-forge
markupsafe 2.1.1 py310he2412df_0 conda-forge
matplotlib-inline 0.1.3 pyhd8ed1ab_0 conda-forge
mistune 0.8.4 py310he2412df_1005 conda-forge
nbclient 0.5.13 pyhd8ed1ab_0 conda-forge
nbconvert 6.4.4 py310h5588dad_0 conda-forge
nbformat 5.2.0 pyhd8ed1ab_0 conda-forge
nest-asyncio 1.5.4 pyhd8ed1ab_0 conda-forge
notebook 6.4.10 pyha770c72_0 conda-forge
openssl 1.1.1l h8ffe710_0 conda-forge
packaging 21.3 pyhd8ed1ab_0 conda-forge
pandoc 2.17.1.1 h57928b3_0 conda-forge
pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge
parso 0.8.3 pyhd8ed1ab_0 conda-forge
pickleshare 0.7.5 py_1003 conda-forge
pip 22.0.4 pyhd8ed1ab_0 conda-forge
prometheus_client 0.13.1 pyhd8ed1ab_0 conda-forge
prompt-toolkit 3.0.27 pyha770c72_0 conda-forge
prompt_toolkit 3.0.27 hd8ed1ab_0 conda-forge
psutil 5.9.0 py310he2412df_0 conda-forge
pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge
pycparser 2.21 pyhd8ed1ab_0 conda-forge
pygments 2.11.2 pyhd8ed1ab_0 conda-forge
pyparsing 3.0.7 pyhd8ed1ab_0 conda-forge
pyqt 5.12.3 py310h5588dad_8 conda-forge
pyqt-impl 5.12.3 py310h8a704f9_8 conda-forge
pyqt5-sip 4.19.18 py310h8a704f9_8 conda-forge
pyqtchart 5.12 py310h8a704f9_8 conda-forge
pyqtwebengine 5.12.1 py310h8a704f9_8 conda-forge
pyrsistent 0.18.1 py310he2412df_0 conda-forge
python 3.10.2 h9a09f29_4_cpython conda-forge
python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge
python_abi 3.10 2_cp310 conda-forge
pywin32 303 py310he2412df_0 conda-forge
pywinpty 2.0.5 py310h00ffb61_0 conda-forge
pyzmq 22.3.0 py310h73ada01_1 conda-forge
qt 5.12.9 h5909a2a_4 conda-forge
qtconsole 5.2.2 pyhd8ed1ab_1 conda-forge
qtconsole-base 5.2.2 pyhd8ed1ab_1 conda-forge
qtpy 2.0.1 pyhd8ed1ab_0 conda-forge
send2trash 1.8.0 pyhd8ed1ab_0 conda-forge
setuptools 60.9.3 py310h5588dad_0 conda-forge
six 1.16.0 pyh6c4a22f_0 conda-forge
soupsieve 2.3.1 pyhd8ed1ab_0 conda-forge
sqlite 3.37.1 h8ffe710_0 conda-forge
stack_data 0.2.0 pyhd8ed1ab_0 conda-forge
terminado 0.13.3 py310h5588dad_0 conda-forge
testpath 0.6.0 pyhd8ed1ab_0 conda-forge
tk 8.6.12 h8ffe710_0 conda-forge
tornado 6.1 py310he2412df_2 conda-forge
traitlets 5.1.1 pyhd8ed1ab_0 conda-forge
tzdata 2021e he74cb21_0 conda-forge
ucrt 10.0.20348.0 h57928b3_0 conda-forge
vc 14.2 hb210afc_6 conda-forge
vs2015_runtime 14.29.30037 h902a5da_6 conda-forge
wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge
webencodings 0.5.1 py_1 conda-forge
wheel 0.37.1 pyhd8ed1ab_0 conda-forge
widgetsnbextension 3.5.2 py310h5588dad_1 conda-forge
winpty 0.4.3 4 conda-forge
xz 5.2.5 h62dcd97_1 conda-forge
zeromq 4.3.4 h0e60522_1 conda-forge
zipp 3.7.0 pyhd8ed1ab_1 conda-forge
zlib 1.2.11 h8ffe710_1013 conda-forge

```

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。