分割错误:在OS X中为11
我在OSX 10.9上遇到Python 3.3.2中的一个问题,如果我在terminal窗口中打开Python,它将在我input的第二行后面出现“Segmentation error:11”,而不pipe这两个命令是什么。 例如,如果我input:
>>> for x in range(1000): print(x)
这工作正常,但如果我input:
>>> for x in range(1000): ... print(x)
那么当我按下第二行的input时会出现错误。 我也可以运行超过2行的脚本没有任何问题。
我今天下午更新到OSX 10.9,所以我怀疑可能是这样。
不过,我最近安装了IPython(以及其他几个软件包),并且在过去的几天里一直在使用它,所以最近我可能会安装其他软件。 我有几次尝试在安装PyQt的地方尝试运行configure.py,但是“make”命令失败,我也很怀疑。
我尝试重新安装Python,但它没有解决问题。 IPython和IDLE都没有问题。 我只关心什么是潜在的问题。
任何帮助表示赞赏,在此先感谢。
这是Python中readline兼容性的一个bug,与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(又名小牛)。 已经有很多人对此感兴趣,部分原因是苹果公司已经免费提供,并且使得拥有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安装程序dynamic链接到libedit,所以在readline.c中原始的历史索引devise缺陷中的原始解决方法现在会在用户以交互方式键入第二个命令时导致10.9的段错误。 不好。 Ronalddevise了一个修复程序,允许readline.so在运行时检测和使用libedit版本,以便在多个OS X版本之间继续保持二进制兼容性。 这个修正已经在3.4.0 alpha版本中出现了,并回到了3.3版本和2.7版本的分支,等待在那里发布。 就在过去的12个小时内,用户报告的问题至less有四个重复。 我已经更新了原来的问题,明确提到10.9,现在它已经不在NDA之下了,并且为没有经验的用户提供一个可下载的脚本,通过“移除”readline.so来解决这个问题。 据推测,随着话语的消失,重复开放的问题将会减less,但影响将持续下去。
升级到OS X 10.9后,我遇到了这个问题,并使用Python网站上提供的补丁: http : //bugs.python.org/issue18458#msg201087
要使用它,在Terminal.app(或其他shell)中打开terminal会话,然后input:
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
如果有提示,请input密码
我有这个问题。 将我的csv分析器中的chunksize
更改为100可以消除错误。
我遇到了类似的“分段错误11”的错误,但对我来说,它使用汞(汞)
这是试图通过.mpkg安装程序安装Python 2.7.8并在OS X 10.9.5上安装pip install mercurial
我认为更新到2.7.8会解决这个问题,但似乎mercurial仍然在寻找系统/库/框架/ Python.framework /版本/ 2.7
即使试图遵循这个稍微不明智的build议,事情仍然没有奏效。 我会跑
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
最后,我的解决scheme似乎来自(重新)安装与自制软件的 Python使用,以获得2.7.8版本(截至2014年12月)
然后我用brew安装mercurial重新安装了mercurial,似乎解决了引起这个问题的任何依赖关系。 我希望我能更好地理解Seg错误发生了什么,但是不能深究。
我仍然有最好的猜测是mercurial仍然引用系统python,尽pipe2.7.8被正确安装,并且usr / local / bin首先在path中
/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:没有这样的文件或目录
所以,我build议用brew更新python安装,然后重新安装任何你依赖的其他软件包。