小编典典

分段错误:在OS X中为11

python

我在OSX 10.9上的Python
3.3.2中遇到问题,如果我在终端窗口中打开Python,则无论输入的是两个命令是什么,它都会在我输入的第二行之后退出并显示“错误:11”。例如,如果我输入:

>>> for x in range(1000): print(x)

效果很好,但是如果我输入:

>>> for x in range(1000):
...     print(x)

然后在第二行按Enter键时出现错误。我也可以运行多于2行的脚本,而不会出现任何问题。

我今天下午更新到OSX 10.9,所以我怀疑可能是这样。

但是,我最近才安装了IPython(以及其他几个软件包),并且过去几天一直在使用它,所以可能是我最近安装的其他东西。我在运行configure.py的地方安装PyQt的尝试失败了两次,但随后“
make”命令失败了,我对此也感到怀疑。

我尝试重新安装Python,但无法解决问题。IPython和IDLE都可以正常工作。我只是担心潜在的问题。


阅读 160

收藏
2020-12-20

共1个答案

小编典典

这是python中的readline兼容性中的错误,与OSX10.9中引入的更改有关。这个周末,发布了修复此错误的Python2.7.6和Python3.3.3候选发布版本。下载链接如下。

http://python.org/download/releases/2.7.6/

http://python.org/download/releases/3.3.3/

这是问题,引用Ned Deily的话,写在python-
dev电子邮件列表中

苹果在周二发布了OS X
10.9(又名Mavericks)。人们对此已经产生了浓厚的兴趣,部分原因是Apple免费提供了该功能,并使拥有10.8、10.7和(大多数)10.6系统的用户可以轻松地直接升级到10.9。不幸的是,我们在OS
X 10.9上的当前维护版本(3.3.2和2.7.5)存在一些问题,需要尽快发布新的维护版本。

一个关键点在于,它会导致解释器在以交互方式运行时崩溃(http://bugs.python.org/issue18458)。该问题是由于libedit的readline兼容性层中长期存在的兼容性问题所致,上游终于解决了该问题,而Apple现在已在10.9中发布了该问题。由于python.org安装程序动态链接到libedit,因此,当用户以交互方式键入第二个命令时,readline.c中针对历史索引中原始设计缺陷的原始变通方法现在会导致在10.9上出现段错误。不好。Ronald设计了一个修补程序,该修补程序允许readline.so在运行时检测和使用任一版本的libedit,以便我们继续在多个OS
X发行版之间具有二进制兼容性。该修补程序已在3.4.0
Alpha中发布,并反向移植到3.3和2.7分支中,等待在那里发布。仅在最近的12小时内,用户报告了至少四份该问题的副本。我已经更新了原始问题,以明确提及10.9,现在它不再属于NDA,并且为没有经验的用户提供一个可下载的脚本,以通过“删除”
readline.so解决此问题。据推测,随着消息传开,将会出现较少的重复问题,但影响仍然存在。

2020-12-20