Swift REPL抛出python错误?

时间:2014-11-29 15:32:40

标签: python xcode swift read-eval-print-loop

当我尝试使用swiftxcrun swift运行swift REPL时,我收到以下Python错误:

  

Hristos-MacBook-Pro:~Hristo $ swift

     

致命Python错误:PyThreadState_Get:没有当前线程

     

中止陷阱:6

看起来Swift的REPL是用Python编写的。我最近安装了pip,这可能会破坏某些东西。我正在使用Xcode 6.1(A1052d)和OS X Yosemite。可能是什么情况?

Trying to run <code>swift</code>

2 个答案:

答案 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