我在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都没有问题。我只关心可能存在的根本问题。
答案 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安装,然后重新安装你依赖的其他软件包。