ページ更新: 2011-10-14 (金) (2591日前)

(2008-10-17作成)

未完。作業中。

目次

[編集]

参考 #

ついでにこちらも入れる:

(2011-10-14) json.py, simple-json に関する変更点

[編集]

インストール #

(Debian GNU/Linux 4.0)

[編集]

json-pyのインストール #

zipを取得して、展開する:

$ wget http://downloads.sourceforge.net/json-py/json-py-3_4.zip
$ unzip json-py-3_4.zip -d json-py-3.4
Archive:  json-py-3_4.zip
  inflating: json-py-3.4/json.py
  inflating: json-py-3.4/jsontest.py
  inflating: json-py-3.4/readme.txt
  inflating: json-py-3.4/changes.txt
  inflating: json-py-3.4/license.txt
  inflating: json-py-3.4/minjson.py

Pythonのバージョンを調べる。Python 2.6だと標準でjsonライブラリ(json-pyとは違うもの)が入っているので、悩む羽目になると思うので:

$ python -V
Python 2.4.4

site-packagesディレクトリの位置を調べる:

$ python -c 'import trac; print trac.__path__'
['/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac']

この環境では「/usr/lib/python2.4/site-packages/」だと判明した。

site-packageにコピーする:

$ sudo cp json-py-3.4/json.py /usr/lib/python2.4/site-packages/
$ sudo cp json-py-3.4/minjson.py /usr/lib/python2.4/site-packages/

importして、パスを調べてみる:

$ python -c 'import json; print json.__file__'
/usr/lib/python2.4/site-packages/json.py

$ python -c 'import minjson; print minjson.__file__'
/usr/lib/python2.4/site-packages/minjson.py
[編集]

プラグインのインストール #

TicketExtPlugin, CustomFieldAdminPlugin, ついでに CompleteUserをインストールする:

$ sudo easy_install http://trac-hacks.org/svn/customfieldadminplugin/0.11/
$ sudo easy_install http://trac-hacks.org/svn/ticketextplugin/0.11/
$ sudo easy_install http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/completeuserplugin/trunk

たぶん、これでインストール完了。

[編集]

Windowsの場合 #

Windows XP Pro SP3, Python 2.5.2, setuptools 0.6c9dev-r66389 (easy_install-script.pyに書いてある), Trac-0.11.1.ja1ではこんな感じ:

C:> python -V
Python 2.5.2

http://downloads.sourceforge.net/json-py/json-py-3_4.zip を入手して、展開して、json.pyとminjson.pyをc:\Python25\lib\site-packagesにコピー

プラグインのインストール:

C:> easy_install http://trac-hacks.org/svn/customfieldadminplugin/0.11/
C:> easy_install http://trac-hacks.org/svn/ticketextplugin/0.11/
C:> easy_install http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/completeuserplugin/trunk  ★ついでに入れた
[編集]

設定 #

(いまんとこ略)

[編集]

エラーの調査 (Windows) #

Windowsにて、Tracの「管理」でプラグインを有効にしたところ、次のエラーが出た:

Trac detected an internal error:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

(略) 

Python Traceback
	Most recent call last:
	File "c:\python25\lib\site-packages\Trac-0.11.1.ja1-py2.5.egg\trac\web\main.py", line 424, in _dispatch_request
	File "c:\python25\lib\site-packages\Trac-0.11.1.ja1-py2.5.egg\trac\web\main.py", line 198, in dispatch
	File "c:\python25\lib\site-packages\Trac-0.11.1.ja1-py2.5.egg\trac\admin\web_ui.py", line 95, in process_request
	File "c:\python25\lib\site-packages\Trac-0.11.1.ja1-py2.5.egg\trac\admin\web_ui.py", line 94, in _panel_order
	Code fragment:
	89.	                return -1
	90.	            elif p2[0] == 'general':
	91.	                if p1[0] == 'general':
	92.	                    return cmp(p1[1:], p2[1:])
	93.	                return 1
	94.	            return cmp(p1, p2)
	95.	        panels.sort(_panel_order)
	96.	 
	97.	        cat_id = req.args.get('cat_id') or panels[0][0]
	98.	        panel_id = req.args.get('panel_id')
	99.	        path_info = req.args.get('path_info')

	Local variables:
	Name	Value
	p1	('ticket',  ...
	p2	('ticket', u'\u30c1\u30b1\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0',  ...

System Information:
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)

	      Trac:	0.11.1.ja1
	    Python:	2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]
	setuptools:	0.6c9
	    SQLite:	3.3.4
	  pysqlite:	2.3.2
	    Genshi:	0.5.1
	mod_python:	3.3.1
	  Pygments:	0.11.1
	Subversion:	1.5.3 (r33570)
	    jQuery:	1.2.6

このトレースバックでは、直接の原因はわからない。 しかし、「管理」の画面でエラーが出たこと、あと前後のソースコードを見ると、管理画面に項目を挿入する部分らしいことがわかる。

とりあえず、確認を容易にするために、プラグインをZIP展開済み(-Z)の状態で上書きインストール(-U)する:

C:> easy_install -Z -U http://trac-hacks.org/svn/ticketextplugin/0.11/
Downloading http://trac-hacks.org/svn/ticketextplugin/0.11/
Doing subversion checkout from http://trac-hacks.org/svn/ticketextplugin/0.11/ to c:\temp\easy_install-4px0ud\0.11
Processing 0.11
Running setup.py -q bdist_egg --dist-dir c:\temp\easy_install-4px0ud\0.11\egg-dist-tmp-av08gb
ticketextplugin 0.2-r4457 is already the active version in easy-install.pth

Installed c:\python25\lib\site-packages\ticketextplugin-0.2_r4457-py2.5.egg
Processing dependencies for ticketextplugin==0.2-r4457
Finished processing dependencies for ticketextplugin==0.2-r4457

そして、c:\python25\lib\site-packages\ticketextplugin-0.2_r4457-py2.5.egg\ のPythonスクリプトのうち、 管理画面を扱うっぽい template_admin.py を見て、ascii文字以外の文字を含む部分を調べて、次のように変更した:

    # IAdminPanelProvider method
    def get_admin_panels(self, req):
        if req.perm.has_permission('TRAC_ADMIN'):
            # localization
            locale = TicketExtUtil(self.env).get_locale(req)
            if locale in ['ja', 'ja-JP']:
-               yield ('ticket', 'チケットシステム', 'template_admin', 'チケットテンプレート')
+               yield ('ticket', u'チケットシステム', 'template_admin', u'チケットテンプレート')
            else:
                yield ('ticket', 'Ticket System', 'template_admin', 'Ticket Template')

Apacheを再起動して、再度画面を見たところ、エラーが解消した。

[編集]

エラーの調査 (Debian) #

環境は Debian GNU/Linux 4.0 (etch) + etch-backports。

この環境でも、Windowsと同じエラーが出た。Windowsと同じ修正でエラーが解消した。

Oops
	Trac detected an internal error: 
	UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

Python Traceback
	Most recent call last: 
	File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/web/main.py", line 424, in _dispatch_request 
	File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/web/main.py", line 198, in dispatch 
	File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/admin/web_ui.py", line 95, in process_request 
	File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/admin/web_ui.py", line 94, in _panel_order 
	Code fragment:
	89.	                return 
	90.	            elif p2[0] == 'general':-1
	91.	                if p1[0] == 'general':
	92.	                    return cmp(p1[1:], p2[1:])
	93.	                return 1
	94.	            return cmp(p1, p2)                          	 
	95.	        panels.sort(_panel_order)                          
	96.
	97.	        cat_id = req.args.get('cat_id') or panels[0][0]
	98.	        panel_id = req.args.get('panel_id')
	99.	        path_info = req.args.get('path_info')
	                        
	Local variables:

System Information:
User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.04506.30; .NET CLR 
3.0.04506.648; .NET CLR 3.5.21022)

	      Trac:	0.11.1.ja1
	    Python:	2.4.4 (#1, Apr 15 2008, 23:37:53) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]
	setuptools:	0.6c3
	    SQLite:	3.3.8
	  pysqlite:	2.3.2
	    Genshi:	0.5.1
	mod_python:	3.2.10
	  Pygments:	0.10
	Subversion:	1.4.2 (r22196)
	    jQuery:	1.2.3
[編集]

このエラーが起こる環境と起こらない環境の違い(推測) #

このエラーが起こる環境と起こらない環境が存在するようだ。

(少なくとも、作者氏の環境では起こっていない)

推測だが、エラーが起こらない環境では、site-packages/sitecustomize.py が用意され、sys.setdefaultencoding("utf-8")と記入されているのではないだろうか。