PythonとTwitter Stream APIをいじってみたくなったその1(失敗談)

ってことで、インストールとか環境設定の話。
バージョンが変わったりとかしても対処しません。個人的な作業ログに近いです。

Pythonインストール

ダウンロード
http://www.python.jp/Zope/download/pythoncore

とりあえず新しいものって感じで3.1.3のWindows版をダウンロード。
インストールは特に設定変更せずにNext!

環境変数設定

「システムのプロパティ」を開いて「詳細設定」。Windowsのエディションによって微妙に名前が違うけど適当に読み替えてください。
「システム環境変数」(「ユーザー環境変数」でも可)の変数「Path」を選択して「編集」。
末尾に「;C:\Python31」(セミコロンを忘れないように)を入力して「OK」。

Pythonの動作確認

パスが通ってるか確認する程度。
コマンドプロンプトを立ち上げて、「python -V」を実行。
バージョンが表示されれば大丈夫でしょう(ファイル破損とかは考慮しない)。

easy_installをインストール

なんか、PythonからTwitterAPIを使うのにtweepyってモジュールをインストールするみたいなんだけど、そのモジュールを簡単にインストールするためのモジュールみたいだけどよくわからない。
下記サイトに従ってインストール。
easy_install
まずはこいつをダウンロード。面倒なのでデスクトップに配置。
ez_setup.py
コマンドプロンプトで「cd Desktop」してから「python ez_setup.py」。(Windows 7なのでDesktop。XPならDesktopはデスクトップに読み替えて…日本語混じっても実行できるのかな?出来なかったら別なディレクトリに入れてやればいいよ。XPだとDocument and Settingsフォルダ配下だからスペースも心配!)

  File "ez_setup.py", line 106
    except pkg_resources.VersionConflict, e:
                                        ^

…やったね!シンタックスエラーだ!

例外を受け取るときの書き方とかPython 3系では変更されてるからなぁ.
(Windows の Python 2.5,2.6,3.1にsetuptoolsを入れる - Livingdead の日記)

Python 3で例外を受け取る場合は、コンマの変わりにキーワード「as」を使って以下のように書きます。Python 2.6以上でもこの文法が利用できます。
(言語としての一貫性を重視したPython 3の進化 − @IT)

なるほどー。

106行目の

    except pkg_resources.VersionConflict, e:

    except pkg_resources.VersionConflict as e:

に変える。
よし、実行!

  File "ez_setup.py", line 241
    print "Setuptools version",version,"or greater has been installed."
                             ^
SyntaxError: invalid syntax
|<<

シンタックスエラー!

>>
printを括弧付き…関数として呼べば通る。
この呼び方は2.6・3.0どちらでも使えるので、括弧付きを使っておいたほうが無難。
(<a href="http://d.hatena.ne.jp/qnzm/20090315/1237121603">Python3ではprintは関数 - qnzm.log(クニジマログ)</a>)
<<
今までは関数じゃなかったらしい。へー。

241行目と242行目
>||
            print "Setuptools version",version,"or greater has been installed."
            print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
|<<
を
>||
            print ("Setuptools version",version,"or greater has been installed.")
            print ('(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)')
|<<
に変更。

こーんどこそー。

>||
  File "ez_setup.py", line 278, in <module>
    main(sys.argv[1:])
  File "ez_setup.py", line 210, in main
    egg = download_setuptools(version, delay=0)
  File "ez_setup.py", line 132, in download_setuptools
    import urllib2, shutil
ImportError: No module named urllib2

ダメでした。

ちなみに、Python3系ではPython2系のurllibは廃止され、urllib2もurllib.requestという名称に変更されている。ということで、Python3系を見据えるならurllibではなくurllib2を利用するのが望ましいようだ。
(日本語リファレンスには書いてない話:urllibとurllib2の違いってなんだ « DailyHckr)

モジュールインストールしてもうまくいかないとかありそうな気がしてきたなぁ…とりあえずやるだけやってみるか。

132行目

    import urllib2, shutil

    import urllib.request, shutil


158行目

            src = urllib.request.urlopen(url)

            src = urllib2.urlopen(url)

に変更。

その結果…

Downloading http://pypi.python.org/packages/3.1/s/setuptools/setuptools-0.6c11-p
y3.1.egg
Traceback (most recent call last):
  File "ez_setup.py", line 206, in main
    import setuptools
ImportError: No module named setuptools

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "ez_setup.py", line 278, in <module>
    main(sys.argv[1:])
  File "ez_setup.py", line 210, in main
    egg = download_setuptools(version, delay=0)
  File "ez_setup.py", line 158, in download_setuptools
    src = urllib.request.urlopen(url)
  File "C:\Python31\lib\urllib\request.py", line 121, in urlopen
    return _opener.open(url, data, timeout)
  File "C:\Python31\lib\urllib\request.py", line 356, in open
    response = meth(req, response)
  File "C:\Python31\lib\urllib\request.py", line 468, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python31\lib\urllib\request.py", line 394, in error
    return self._call_chain(*args)
  File "C:\Python31\lib\urllib\request.py", line 328, in _call_chain
    result = func(*args)
  File "C:\Python31\lib\urllib\request.py", line 476, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

のっとふぁうんど。
サイトを直接確認。
Index of /packages/3.1/s
……ない。つまり、そういうことです。
アンインストールして2.xをインストールするかー。