我在OSX 10.9上的Python 3.3.2中遇到了一个问题,如果我在终端窗口中打开Python,它会在我输入的第二行之后以"Segmentation error:11"退出,无论这两个命令是什么.例如,如果我输入:
>>> for x in range(1000): print(x)
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我输入:
>>> for x in range(1000):
... print(x)
Run Code Online (Sandbox Code Playgroud)
然后当我在第二行按Enter键时出现错误.我也可以运行一个超过2行的脚本,没有任何问题.
我今天下午更新到OSX 10.9,所以我怀疑可能是它.
但是,我刚刚安装了IPython(以及其他几个软件包)并且在过去的几天里一直在使用它,所以它可能是我最近安装的其他东西.我有几次尝试安装PyQt的尝试失败,我运行了configure.py但是"make"命令失败了,我也对此表示怀疑.
我尝试重新安装Python,但它没有解决问题.IPython和IDLE都没有问题.我只关心可能存在的根本问题.
Rob*_*bon 48
这是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电子邮件列表上.
周二,Apple发布了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 alphas中出来并向后移植到3.3和2.7分支,等待那里的释放.就在过去的12个小时内,用户报告的问题至少有四个重复.我已经更新了原始问题,明确提到10.9,现在已不再使用NDA,并为没有经验的用户提供可下载的脚本,通过"删除"readline.so来解决问题.据推测,随着消息传出,开启的重复问题将会减少,但影响仍将存在.
Ash*_*han 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
Run Code Online (Sandbox Code Playgroud)
然后
sh ./patch_readline_issue_18458.sh
如果有提示,请输入密码