技術

Mac(Snow Leopard)のPython2.7の対話モードでタブと日本語を入力できるようにする方法

この前、Mac(Snow Leopard)にPython2.7をインストールしたらタブがおかしくなったってのを書きまして、その時はPYTHONSTARTUP環境変数に設定したスタートアップスクリプトでごちゃごちゃやってとりあえずはタブだけは入力出来るようにしてたのですが、もしや?!と思い

easy_install readline

と、やってみたらスタートアップスクリプトを使わなくても対話モードでタブも日本語も入力出来るようになりました。

なんか脱力w

コメント

初めまして、ぴーすけと申します。
python初心者です。

私もこの度、「タブと日本語入力」が出来なく、悩んでおりまして。。
初心者ゆえご教授頂けたらと思いカキコさせて頂きます。

easy_install readline

この一文、どうすればよろしいのでしょうか?
お手数でなければ、どうぞアドバイス頂けたらと思います。
よろしくお願い申し上げます。

どうも!コメントありがとうございます。

一般的には、Xcodeをインストールし、Pythonのバージョンにあったsetuptoolsをインストールし、
ターミナルから easy_install readline を実行するという流れでいけるハズですが、
今回新しく↓で書いたとおり、Xcodeがバージョン4になって現在ではすんなりいかなくなってるみたいです。
https://peta.okechan.net/blog/archives/1113

それを踏まえた上で、具体的には以下の手順でイケるはずです。
1. Xcode4をインストール(readlineのコンパイルに使うgccがXcodeに入ってます)
2. ターミナルを開き、以下の二つのコマンドを実行する
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin/
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin/
3. 次のURLのページから setuptools-0.6c11-py2.7.egg (Python2.7の場合)をダウンロード
http://pypi.python.org/pypi/setuptools
4. ターミナルで setuptools をダウンロードしたディレクトリに移動し以下のコマンドで setuptools をインストールする
sudo sh setuptools-0.6c11-py2.7.egg
5. ターミナルで以下のコマンドを実行し readline をインストールする
sudo easy_install readline

easy_install ではPython用の色々な便利なライブラリがインストール出来ます。
1〜4までの手順は最初の1回だけでOKですので、次から(readlineのような)他のライブラリをインストールするときは5の手順だけで済みます。

あっ、ご丁寧なお返事、ありがとうございます。

うーん、Xcodeが必要なんですね。。そうですかぁ。
私レベルは、そこまで行っていないので、別の手段を考えないとダメそうで。。

どうもありがとうございました。
またチョクチョク寄らせて頂こうと思います。
どうぞ、よろしくお願いいたします。

こんにちは。。
先日は、ご丁寧な解説を頂きありがとうございました。

先日の続きで恐縮ですが、質問させていただいてもよろしいでしょうか?
(ご面倒であればスルーしてくださいませ。)

(もともと私は、Python 初心者というよりも、“プログラミング初心者”でして。その上で、お聞きしたいのですが…)

●Xcode4のインストール後に…
2)の二つのコマンドは、ターミナルを開いた後、Python を立ち上げる前にしました。
(実際には、ご教授頂いたものを一つずつコピーベースとして実行しただけでしたが。)
多分、エラーは起きなかったのだと感じますが…。

●3)についてなのですが、これは事前にサイトへ行きダウンロードしてあったので、ターミナルを開き cd 等で ダウンロードフォルダに移動したつもりで以下のコマンドを実行したつもりなのですが、これは間違った事をしていたのでしょうか?

sh: setuptools-0.6c11-py2.7.egg: No such file or directory

ターミナルからは↑このような表示。
(多分エラーだと判断。)
ただ自分では、ダウンロードフォルダーに落としてきたので、
そこへ cd downlods として移動し、4)を実行したつもりだったのですが。。
これも間違った判断だったのでしょうか?色々調べてみると、「PATH を通す」というような事をしなくてはいけないのでしょうか?

※結論として、Python の勉強の前に、UNIX などの勉強の方が先なのでしょうか?
大変不躾に色々お聞きしておりますが、良きアドバイスなど頂けましたら幸いです。
どうぞ、よろしくお願い申し上げます。

お見受けしたところ「sudo sh setuptools-0.6c11-py2.7.egg」で「No such file or directory」のエラーが出る部分以外の手順に関しては問題ないと思われます。

「No such file or directory」というエラーは単純に sh というコマンドが setuptools-0.6c11-py2.7.egg という名前のファイルを見つけれないことで起こります。

なのでファイル名かカレントディレクトリが間違っているのが原因かと思います。(PATHを通したりする必要は通常はありません。)
それ以外の原因はちょっと思いつきません。

もしかしたら違うバージョンの.eggファイルをダウンロードされてるのかもしれません。

「setuptools-0.6c11-py2.7.egg」は以下のURLから直接ダウンロード出来ます。
http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea

Pythonプログラミングに関してはUNIXなどOSの勉強は追々でいいんじゃないかなと僕は思ってます。
Python自体は色んなOSで動きますし、開発のターゲットとなるOSに関して必要になったときに必要なだけ勉強するのが効率がいいかと。
Pythonでプログラミング(言語)の勉強をする際にはOS依存の機能はあまり必要ないですし。

しかしPython関係に限らずMacをターミナルで便利にor深く扱うには多少はUNIXの知識があったほうが捗るのも事実でしょう。

僕はUNIX系OSの知識などは実地で学んできたほうなので、おすすめの書籍とかの情報は持ちあわせてません。
とにかくやってみるのが大事かなと思ってます。
(僕も大した能力は持ってないので話半分程度で聞いてくださいねw)

管理者様へ

早速のお返事、あっ、あっ、ありがとうございました!!!(笑)
遅くまで、お疲れ様です。
しかも、お忙しいであろうと思われる夜遅くに。感謝です。

嬉しくて早速やってみました!!

●結果ご報告です。

どうやら2.7の方にはインストールされずに、元々入っていたであろう”2.6.1”の方へ
インストールされたようでした。(以下、ご確認くださいませ。)
で、このままでも使える事は使えるのだろうと思われますが、
一つ疑問が…日本語入力した次の行に返された部分が
文字化けしており、これは、シェルの表示部分にだけ文字化けされて
print コマンドですと、ちゃんと表示される、というものでした。

このまま気にせず使っていてもいいものなのでしょうか?

あとは…
2.7の方へインストールする場合は、Macports等をインストールする方が、
後々使いやすいものなのでしょうか?
ただこの場合、やはり何らかの 「PATH を通す」というような事をする必要が有るのでしょうか?

図々しくもお聞きする事をお許しくださいませ。

—————————————————————————————————-

Last login: Tue Jun 21 20:32:26 on ttys000
MacBook-Pro:~ p_s_k_e$ sudo easy_install readline
Searching for readline
Best match: readline 6.2.0
Processing readline-6.2.0-py2.6-macosx-10.6-universal.egg
readline 6.2.0 is already the active version in easy-install.pth

Using /Library/Python/2.6/site-packages/readline-6.2.0-py2.6-macosx-10.6-universal.egg
Processing dependencies for readline
Finished processing dependencies for readline
MacBook-Pro:~ p_s_k_e$ python2.6
Python 2.6.1 (r261:67515, Aug 2 2010, 20:10:18)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> u’にほんご’
u’\u306b\u307b\u3093\u3054′
>>> print ‘にほんご’
にほんご
>>> a = u’にほんご’
>>> a
u’\u306b\u307b\u3093\u3054′
>>> print a
にほんご
>>>

——————————————————————————————————

色々思い出したり調べたりしたところ、前回の回答で、「PATHを通したりする必要は通常はありません。」と書いたのは間違いだったかもしれません。
申し訳ないです。

2.7用のsetuptoolsをインストールするとき「No such file or directory」のエラーが出るのは、 /Library/Frameworks/Python.framework/Versions/2.7/bin(python.orgで配布してるPython2.7をインストールした場合。) にPATHが通ってないからかもしれません。
(他にも /usr/local/bin にPATHが通ってなかったら通したほうがいいです。)
setuptoolsをインストールすると /Library/Frameworks/Python.framework/Versions/2.7/bin にeasy_installコマンドが出来ます。
インストールできたら、他のバージョンのeasy_installと混同しないように、パスの優先度をあげるか、シンボリックリンクで別名を付けるのが良いかと思います。

通常だと、 setuptools-0.6c11-py2.7.egg は python 2.7 以外には入らないはず(例えば2.6用には setuptools-0.6c11-py2.6.egg が用意されています)で、 何か別の作業で2.6.1用に入れたor副作用的に入ってしまった別のsetuptools(easy_installコマンド)が現状では使われてるだけかもしれません。
(僕は2.7を使ってますが2.7に依存したコードを書いたことはほとんどないので、とりあえず2.6.1で問題なければそのまま使ってもいいと思います。)

対話モードでprintで出力しない場合に日本語が化けるのは、それで正常というか普通なことなので心配する必要はないです。
対話モードでは式を入力して改行するとその値を表示しますが、この”値”というのは基本的には「Pythonインタープリタが解釈すると、元の式の値と同じになる文字列」となります。
(ちなみに「Pythonインタープリタが解釈した結果、元の式の値と同じになる文字列」を返すrepr()組み込み関数というものがありますので、print repr(u’にほんご’)とすると同じように化けた結果が表示されると思います。)

で、Pythonのユニコード型はもちろんユニコードを使ってるわけですが、ユニコードというのは一つの文字につき一つのコードポイント(まぁただの数値です)を割り当てて、内部的にはその数値の並びで文字列を表現します。
その内部的な数値がそのまま出てる状態は化けてるように見えますけども、ユニコード型の内部表現をそのまま表示してるだけなので化けてるわけではないのです。

ユニコード型の”にほんご”という文字列は、Pythonでは u’にほんご’ とも u’\u306b\u307b\u3093\u3054′ とも表せるんですね。
== で比較してみるとわかると思いますが、このふたつは実際に同じものになります。
さらに print u’\u306b\u307b\u3093\u3054′ を試してみると にほんご という文字が表示されるのが確認出来ると思います。

あとMacPortsについては、僕も使ってますが、直接PythonのためにMacPortsを使ったことはほとんどありません。
(PythonでOpenCVモジュールを使おうと思ったときぐらいです。)
もちろんMacPortsでもPython関係に限らず色々な環境構築が出来るようになってますのでチャレンジしてみるのもいいと思います。

そうでしたかぁ。了解しました!ありがとうございます。

この度は、私の様な不出来な輩の不躾なお願いにも関わらず、快くお付き合い頂き、大変感謝しております。ありがとうございました。
また、チョコチョコ寄らさせて頂きたいと思います。今後とも、どうぞよろしくお願いいたします。

※ニコニコでお声拝聴しちゃいました。(笑)

pske

追…

今回の事は、私にとって非常に有り難い出来事であり、今後の肥やしになると思うとホント嬉しく思います。

重ね重ね、感謝いたします。

僕も勉強になりました。
教えるほうも勉強になるといいますからね。

こちらこそ今後ともよろしくお願いします。

※元熊本県民の訛りを聞かれてちょっと恥ずかしいですw

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください