当我尝试使用swift
或xcrun swift
运行swift REPL时,我收到以下Python错误:
Hristos-MacBook-Pro:~Hristo $ swift
致命Python错误:PyThreadState_Get:没有当前线程
中止陷阱:6
看起来Swift的REPL是用Python编写的。我最近安装了pip
,这可能会破坏某些东西。我正在使用Xcode 6.1(A1052d)和OS X Yosemite。可能是什么情况?
答案 0 :(得分:5)
我遇到了同样的问题。上面的回答给了我一个非侵入性解决方案的暗示(在我的情况下,我在路径的头部有fink的python)
% PATH=/usr/bin:$PATH
% swift
该解决方案基于以下观察结果。 Fink(我假设Macports和其他第三方python提供者)把他们的bin目录放在路径的头部。这可以通过在命令行上调用python来看到:
% which python
/sw/bin/python
这是我遇到问题导致我寻找解决方案的地方:
% swift
Fatal Python error: PyThreadState_Get: no current thread
[1] 19219 abort swift
通过在shell级别更改$ PATH变量,可以避免在不更改将来shell会话的默认条件的情况下解决问题:
% PATH=/usr/bin:$PATH
% which python
/usr/bin/python
现在它起作用了:
% swift
Welcome to Swift! Type :help for assistance.
1>
更永久的解决方案(不能永久改变$ PATH变量元素的顺序)可能是在一个shell的dotfile中包含以下别名(或等效函数):
alias swift="PATH=/usr/bin:$PATH swift"
答案 1 :(得分:2)
我更改了活动的python版本(之前通过macports安装了python 2.7)并且它有效:
sudo port select python python33