Develop with pleasure!

福岡でCloudとかBlockchainとか。

Python3.0 + Tracインストール

Tracを新規にインストールする機会があったので、メジャーバージョンアップしたPython3.0も一緒に入れてみた。

現在の最新版は3.0.1でこちらから入手可能。
http://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz

さくっとmakeしてインストール。

以前、TracのPlugin入れたときに、Pythonのデフォルトエンコーディングがasciiで嵌ったので(Trac0.11導入 - Develop with pleasure!)、Python3.0になってどう変わったのか確認してみる。

python3.0
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>>

と、無事デフォルトエンコーディングはUTF-8になってる。素晴らしい。
Python2.6.1以前は、Pythonのインストールディレクトリ/lib/python2.6/site-package直下にsitecustomize.pyファイルを作成し

import sys
sys.setdefaultencoding('utf-8')

と記載しておけば、デフォルトエンコーディングがUTF-8になる。

続いてpythonのパッケージ管理ツールであるsetuptoolsをインストール。こちらからez_setup.pyを入手。
http://peak.telecommunity.com/dist/ez_setup.py

そして、インストール。

python3.0 ez_setup.py
  File "ez_setup.py", line 98
    except pkg_resources.VersionConflict, e:
                                        ^
SyntaxError: invalid syntax

と、エラー発生。python2.5の時は大丈夫だったのに。
ez_setup.py自体2to3コマンドでPython3用のコードに書き直さないと動作しないのね…。てことで2to3でPython3用のコードにコンバートして再度実行する。

2to3 -w ez_setup.py
python3.0 ez_setup.py
Downloading http://pypi.python.org/packages/3.0/s/setuptools/setuptools-0.6c9-py3.0.egg
Traceback (most recent call last):
  File "ez_setup.py", line 194, in main
    import setuptools
  File "/usr/local/src/setuptools-0.6c9/setuptools/__init__.py", line 2, in <module>
    from setuptools.extension import Extension, Library
  File "/usr/local/src/setuptools-0.6c9/setuptools/extension.py", line 2, in <module>
    from dist import _get_unpatched
ImportError: No module named dist

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "ez_setup.py", line 266, in <module>
    main(sys.argv[1:])
  File "ez_setup.py", line 198, in main
    egg = download_setuptools(version, delay=0)
  File "ez_setup.py", line 146, in download_setuptools
    src = urllib.request.urlopen(url)
  File "/usr/local/python-3.0.1/lib/python3.0/urllib/request.py", line 122, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/local/python-3.0.1/lib/python3.0/urllib/request.py", line 364, in open
    response = meth(req, response)
  File "/usr/local/python-3.0.1/lib/python3.0/urllib/request.py", line 476, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/local/python-3.0.1/lib/python3.0/urllib/request.py", line 402, in error
    return self._call_chain(*args)
  File "/usr/local/python-3.0.1/lib/python3.0/urllib/request.py", line 336, in _call_chain
    result = func(*args)
  File "/usr/local/python-3.0.1/lib/python3.0/urllib/request.py", line 484, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

とのエラー。
http://pypi.python.org/packages/3.0/s/setuptools/setuptools-0.6c9-py3.0.egg

確かに404NotFound。まだPython3.0用のsetuptoolsは無いのね…。

Setuptools and easy_install for Python 3! « Lennart Regebro: Python, Plone, Web

同じく、エラーになって、Python3.0用のsetuptoolsを開発中みたい…。

まだPython3.0でTracは早いか…。