分段错误:OS X中有11个

时间:2013-10-23 02:55:33

标签: python macos

我在OSX 10.9上的Python 3.3.2中遇到了一个问题,如果我在终端窗口中打开Python,它会在我输入的第二行之后以“Segmentation error:11”退出,无论这两个命令是什么。例如,如果我输入:

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

工作正常,但如果我输入:

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

然后当我在第二行按Enter键时出现错误。我也可以运行一个超过2行的脚本,没有任何问题。

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

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

我尝试重新安装Python,但它没有解决问题。 IPython和IDLE都没有问题。我只关心可能存在的根本问题。

4 个答案:

答案 0 :(得分:47)

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

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

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

这是问题,引自Ned Deily,写在python-dev email list上。

  

周二,Apple发布了OS X 10.9(a.k.a. Mavericks)。已经有了   对此非常感兴趣,部分原因是因为苹果公司已将其推向市场   免费,使用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兼容性层中长期存在的兼容性问题   上游终于修复了,苹果现在以10.9的速度出货。因为   python.org安装程序动态链接到libedit,原始的解决方法   在readline.c中对于历史索引的原始设计缺陷现在导致了   当用户以交互方式键入第二个命令时,在10.9上发生段错误。不   好。 Ronald设计了一个修复程序,允许readline.so在运行时检测和   使用任一版本的libedit,以便我们继续使用二进制文件   多个OS X版本之间的兼容性。那个修复已经在了   3.4.0 alphas并向后移植到3.3和2.7分支,等待发布   那里。就在过去的12个小时里,至少有四个重复   用户报告的问题。我已经明确地更新了原始问题   提到10.9,现在它不再是NDA,并提供一个   可下载的脚本供没有经验的用户解决问题   “删除”readline.so。据推测,随着消息传出,会有更少的消息   重复的问题已经打开,但影响仍然存在。

答案 1 :(得分:35)

升级到OS X 10.9后我遇到了这个问题并使用了Python网站上提供的补丁:http://bugs.python.org/issue18458#msg201087

要使用它,请在Terminal.app(或其他shell)中打开终端会话,然后输入:

curl -O http://bugs.python.org/file32324/patch_readline_issue_18458.sh
openssl sha1 patch_readline_issue_18458.sh
# the digest should be 7cb0ff57820a027dd4ca242eb2418930f8f46b4c

然后
    sh ./patch_readline_issue_18458.sh

如果出现提示,请输入您的密码

答案 2 :(得分:2)

我有这个问题。将我的csv解析器中的chunksize更改为100可以消除错误。

答案 3 :(得分:1)

我遇到类似的“分段错误11”错误,但对我来说它是使用mercurial(hg)

这是试图通过.mpkg安装程序和pip install mercurial安装Python 2.7.8 在OS X 10.9.5上

我认为更新到2.7.8会解决这个问题,但似乎mercurial仍然在寻找System / Library / Frameworks / Python.framework / Versions / 2.7

即使在尝试遵循此slightly unwise advice之后,事情仍无效。我会跑

hg init
hg add *
hg commit -m ...
hg status

会得到'细分错误11'

堆栈跟踪的前几行指向:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   ???                             000000000000000000 0 + 0
1   osutil.so                       0x00000001095ef768 listdir + 313
2   org.python.python               0x0000000109261b35 PyEval_EvalFrameEx + 14712
3   org.python.python               0x000000010925e093 PyEval_EvalCodeEx + 1641

最后,我的解决方案似乎来自(重新)安装python与homebrew使用它来获得2.7.8版本(截至2014年12月)

然后我重新安装了mercurial与brew install mercurial,它似乎解决了造成这种情况的依赖关系。我希望我能更好地理解Seg故障发生的情况,但无法深入了解它。

我还有最好的猜测是,尽管2.7.8正确安装且usr / local / bin在路径中排在第一位,但mercurial仍在引用系统python

/usr/local/bin:usr/local/git/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:〜/ Develop:/ usr / local / git / bin:没有这样的文件或目录

所以,我建议用brew更新python安装,然后重新安装你依赖的其他软件包。