peketaminの日記

その辺のプログラマーのチラ裏です。

swfit の repl 起動で大量の NameError: name 'run_one_line' is not defined

TL; DR

  • pip install six を試す。swiftを起動する前に、シェルを再起動。
  • Python 2.7 系を入れ直す。swiftを起動する前に、シェルを再起動。
  • Swift を入れ直す。swiftを起動する前に、シェルを再起動。

以下、試行錯誤

Swift Playgrounds を試したくて検索してみたけど、あれは iPad 専用のアプリケーションらしい。

mac で試せない?と思い、更に検索すると、ふつーに REPL があるとのこと。

オッケー。起動してみよう。

$ swift
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python/lldb/__init__.py", line 98, in <module>
    import six
ImportError: No module named six
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined

(以下、同じエラーが大量に続く)

NameError: name 'lldb' is not defined

ほえ?

OS は macOS Sierra

てか、 Swift なのにどうして python っぽいエラーが…え、 __init__.py ?え、ああ、Swift の REPL を実現するのに Python を 使っているのかな。

six。はい。 pip install six で、再度 swift を起動。。。ダメだ。

pyenv で Python 環境を構築したからかなー…。

ここ www.python.org から、 2.7系の最新版をダウンロードしてインストールしてみる (作業時の最新は Python 2.7.12)。

なんか、 brew で入れるのはアレという声を聞いたので公式から入れてみた。 pip は最初から入ってるっぽいし。 再度 pip で six をインストール。

ダメだ。直らねぇ。

ここ swift.org から Swift を入れ直してみよう。

で、実行。直らない。

えー…寝ようかな…いや!シェルを新しいのにしてみよう!

お…あ!エラー出なくなった!

***

すみません、ちょっと色々やりすぎたのでどれが復旧要因か切り分けできてません…。

とりあえず、同じ現象に見舞われた方は、

  • pip install six を試す。swiftを起動する前に、シェルを再起動。
  • Python 2.7 系を入れ直す。swiftを起動する前に、シェルを再起動。
  • Swift を入れ直す。swiftを起動する前に、シェルを再起動。

を試してみてください。

なお、シェルを再起動、と書いてますが、当方、再起動の仕方が分からず、新しくターミナルを開きswiftコマンドを打つことで解消したことを付け加えておきます。