此命令导致RedHat linux中的Python 3.5无限期挂起:
import shapely.geometry
按下Ctrl + C后,我在" /lib/python3.5/ctypes/util.py"中跟踪了这段代码。它挂在subprocess.Popen部分:
try:
with subprocess.Popen(['/sbin/ldconfig', '-p'],
stdin=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
stdout=subprocess.PIPE,
env={'LC_ALL': 'C', 'LANG': 'C'}) as p:
res = re.search(regex, p.stdout.read())
if res:
return os.fsdecode(res.group(1))
except OSError:
pass
阅读this article后,我跑了这个:
$ldconfig -p
我确实得到了一个大的列表,我认为是溢出管道,导致python挂起。
我的问题是:解决此问题的正确方法是什么?现在我做了一个util.py的猴子补丁来快速解决,但它没有解决根本原因。
try:
raise(OSError) # I added this to avoid the stuff below from hanging!
with subprocess.Popen(['/sbin/ldconfig', '-p'],
stdin=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
stdout=subprocess.PIPE,
env={'LC_ALL': 'C', 'LANG': 'C'}) as p:
res = re.search(regex, p.stdout.read())
if res:
return os.fsdecode(res.group(1))
except OSError:
pass