Changes between Version 2 and Version 3 of TracPlugins


Ignore:
Timestamp:
Jun 28, 2019, 2:20:16 PM (5 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracPlugins

    v2 v3  
    1 = Trac プラグイン = #Tracplugins
    2 [[TracGuideToc]]
    3 
    4 バージョン 0.9 以降の Trac は[trac:PluginList プラグイン機能] による機能拡張が可能です。プラグイン機能は、 [trac:TracDev/ComponentArchitecture コンポーネント設計] に基づき、 [trac:TracDev/PluginDevelopment プラグインの開発] ページに記載されているような特性を持っています。
    5 
    6 == プラグインを見つける == #Plugindiscovery
    7 
    8 ユーザの視点からいうと、プラグインはスタンドアロンの .py ファイルか .egg パッケージのどちらかです。 Trac は グローバルで共有するプラグインのディレクトリ ([TracIni#GlobalConfiguration グローバルな設定] 参照) とローカルの TracEnvironment の `plugins` ディレクトリに対して、プラグインを探します。グローバルにインストールされているプラグインを定義するコンポーネントは trac.ini ファイルの [[TracIni#components-section| [components] ]] セクションで明確に有効にするべきです。
    9 
    10 == Trac eggs ファイルにおける必要条件 == #RequirementsforTraceggs
    11 
    12 Trac で Python-egg ベースのプラグインを使用するためには、 [http://peak.telecommunity.com/DevCenter/setuptools setuptools] (バージョン 0.6) をインストールしなければなりません。
    13 
    14 `setuptools` をインストールするために、ブートストラップモジュールである [http://peak.telecommunity.com/dist/ez_setup.py ez_setup.py] をダウンロードし、以下に示すように実行して下さい:
    15 
    16 {{{
    17 $ python ez_setup.py
    18 }}}
    19 
    20 もし `ez_setup.py` スクリプトが setuptools のインストールに失敗したら、 [http://www.python.org/pypi/setuptools PyPI] をダウンロードして手動でインストールしてください。
    21 
    22 また、単一の `.py` ファイルで成り立つプラグインは、各プロジェクトの `plugins` ディレクトリか共有の `plugins` ディレクトリに配置します。
    23 
    24 == Trac プラグインのインストール == #InstallingaTracplugin
    25 
    26 === 単一のプロジェクト === #Forasingleproject
    27 
    28 プラグインは一般的に [http://peak.telecommunity.com/DevCenter/PythonEggs Python eggs] としてパッケージ化されています。つまり、拡張子が `.egg` となっている .zip アーカイブのファイルです。
    29 
    30 プラグインのディストリビューションをダウンロードして `.egg` ファイルをビルドしたい場合:
    31 
    32  * ソースをアンパックして下さい。それにより `setup.py` が提供されるでしょう
    33  * 以下のようにして実行してください:
    34 
    35 {{{
     1[[PageOutline(2-5,Contents,pullout)]]
     2
     3= Trac plugins
     4
     5Trac is extensible with [trac:PluginList plugins]. Plugin functionality is based on the [trac:TracDev/ComponentArchitecture component architecture], with special cases described in the [trac:TracDev/PluginDevelopment plugin development] page.
     6
     7== Plugin discovery
     8
     9From the user's point of view, a plugin is either a standalone .py file or a package (egg or wheel). Trac looks for plugins in Python's `site-packages` directory, the [TracIni#GlobalConfiguration global shared] `plugins` directory and the [TracEnvironment project environment] `plugins` directory. Components defined in globally-installed plugins must be explicitly enabled in the [[TracIni#components-section| [components] ]] section of the `trac.ini` file. Components defined in the `plugins` directory of the project environment are enabled, unless explicitly disabled in the `[components]` section of the `trac.ini` file.
     10
     11== Installing a Trac plugin
     12
     13The instructions below are applicable to a plugin packaged as an egg. Plugins implemented as a single `py` file should be downloaded and copied to the [TracEnvironment project environment] `plugins` directory or the [TracIni#GlobalConfiguration global shared] plugins directory.
     14
     15=== For a single project
     16
     17If you have downloaded a source distribution of a plugin, and want to build the `.egg` file:
     18
     19 * Unpack the source. It should provide `setup.py`.
     20 * Run:
     21 {{{#!sh
    3622$ python setup.py bdist_egg
    3723}}}
    3824
    39 *.egg ファイルが出力されるはずです。実行した python の出力を調べて .egg ファイルがどこに作成されたか見つけてください。
    40 
    41 一度、プラグインアーカイブを作成したら、 [wiki:TracEnvironment TracEnvironment] の `plugins` ディレクトリにコピーする必要があります。また、 Web サーバーが egg プラグインを読み取るのに必要なパーミッションを持っているか確認してください。そして Web サーバを再起動してください。 [wiki:TracStandalone "tracd" というスタンドアロンサーバー] を使用している方は、tracd を再起動してください。
    42 
    43 この方法でインストールしたプラグインをアンインストールする場合、 `plugins` ディレクトリから egg を削除し、 Web サーバを再起動してください。
    44 
    45 Note: Python egg をビルドするための Python のバージョンと Trac を動かしている Python のバージョンが一致しなければなりません。例えば、 Trac を Python のバージョン 2.5 以前で動かしていて、 2.6 にアップグレードしたときに、Python egg は認識されなくなるでしょう。
    46 
    47 Note: マルチプロジェクトを設定している場合、 Python インタプリタインスタンスのプールはプロジェクトの必要に応じて動的にアロケートされ、プラグインは Pyhton のモジュールシステムの一定の位置を占有しますので、最初にロードされたバージョンのプラグインが、他のすべてのプロジェクトでも使用されます。言い換えれば、マルチプロジェクトセットアップされたプロジェクト間では、あるプラグインの異なるバージョンを使用することはできません。プラグインは (下記の方法で) すべてのプロジェクト向けにインストールし、個々のプロジェクトで有効/無効を設定する方が安全でしょう。
    48 
    49 === すべてのプロジェクト === #Forallprojects
    50 
    51 ==== 単一の .egg ファイル ==== #Withan.eggfile
    52 
    53 いくつかのプラグイン (例えば [trac:SpamFilter SpamFilter]) は `.egg` ファイルとしてダウンロードし、 `easy_install` プログラムでインストールすることができます:
    54 {{{
    55 easy_install TracSpamFilter
    56 }}}
    57 
    58 システムに `easy_install` がない場合、インストールするために上記の必要なセクションを見てください。 Windows ユーザは Python をインストールした `Scripts` ディレクトリ (例えば、 `C:\Python24\Scripts`) を環境変数 `PATH` に加えなければなりません。 (より詳しい情報は、 [http://peak.telecommunity.com/DevCenter/EasyInstall#windows-notes easy_install の Windows Notes] を参照してください。)
    59 
    60 zip で固められた Python egg をインストールした後で Trac がパーミッションエラーを出し、 web サーバによって書き込み可能な Python egg のキャッシュディレクトリを提供したくないときは、 Python egg を解凍することで問題を回避できます。`easy_install` に `--always-unzip` オプションを付けるだけです:
    61 {{{
    62 easy_install --always-unzip TracSpamFilter-0.4.1_r10106-py2.6.egg
    63 }}}
    64 zip で固められた Python egg ファイルと同じ名前のディレクトリ (拡張子が `.egg` で終わっているもの) ができ、そのなかに解凍した中身が入っているでしょう。
    65 
    66 Trac は共有の plugins ディレクトリにインストールされたプラグインも検索します ''(0.10 以降)''。 TracIni#GlobalConfiguration を参照してください。この方法は複数の (しかし全てではない) Environment にまたがってプラグインをインストールする最も簡単な方法になります。
    67 
    68 ==== ソースから ==== #Fromsource
    69 
    70 `easy_install` を使ってソースからインストールすることができます。Subversion のリポジトリ又は ソースの tarball/zip を引数に与えてください。
    71 {{{
    72 easy_install http://svn.edgewall.com/repos/trac/plugins/0.12/spam-filter-captcha
    73 }}}
    74 
    75 ==== プラグインを有効にする ==== #Enablingtheplugin
    76 
    77 個別の TracEnvironment にプラグインをインストールする場合と異なり、システム全体にインストールしたプラグインを有効にするためには、 [wiki:TracIni trac.ini] ファイルで明示的に指定しなければいけません。設定ファイルの `[inherit] plugins_dir` オプションに指定した共有の plugins ディレクトリにプラグインをインストールする場合も同じく、明示的に指定する必要があります。
    78 
    79 設定ファイルの `[components]` セクションに次のような記述を加えれば完了です:
    80 {{{
     25You should now have an *.egg file. Examine the output of running Python to find where this was created.
     26
     27Once you have the plugin archive, copy it into the `plugins` directory of the [TracEnvironment project environment]. Also, make sure that the web server has sufficient permissions to read the plugin egg. Then restart the web server. If you are running as a [TracStandalone "tracd" standalone server], restart tracd, ie kill the process and run again.
     28
     29To uninstall a plugin installed this way, remove the egg from the `plugins` directory and restart the web server.
     30
     31'''Note''': the Python version that the egg is built with ''must'' match the Python version with which Trac is run. For example, if you are running Trac under Python 2.6, but have upgraded your standalone Python to 2.7, the eggs won't be recognized.
     32
     33'''Note''': in a multi-project setup, a pool of Python interpreter instances will be dynamically allocated to projects based on need; since plugins occupy a place in Python's module system, the first version of any given plugin to be loaded will be used for all projects. In other words, you cannot use different versions of a single plugin in two projects of a multi-project setup. It may be safer to install plugins for all projects (see below), and then enable them selectively on a project-by-project basis.
     34
     35=== For all projects
     36
     37==== With an .egg file
     38
     39Some plugins, such as [https://trac-hacks.org/wiki/TagsPlugin TracTags], are downloadable as an `.egg` file that can be installed with `easy_install` or `pip`:
     40{{{#!sh
     41$ easy_install TracTags
     42}}}
     43{{{#!sh
     44$ pip install TracTags
     45}}}
     46
     47If `easy_install` is not on your system, see the [trac:setuptools#Installsetuptools Trac setuptools documentation].
     48
     49`pip` is included in Python 2.7.9. In earlier versions of Python it can be installed through the package manager of your OS (e.g. `apt-get install python-pip`) or using the [https://pip.pypa.io/en/latest/installing.html#install-pip get_pip.py].
     50
     51If Trac reports permission errors after installing a zipped egg, and you would rather not bother providing an egg cache directory writable by the web server, you can get around it by simply unzipping the egg. Just pass `--always-unzip` to `easy_install`:
     52{{{#!sh
     53$ easy_install --always-unzip TracTags
     54}}}
     55You should end up with a directory having the same name as the zipped egg, complete with `.egg` extension, and containing its uncompressed contents.
     56
     57Trac also searches for plugins installed in the shared plugins directory, see TracIni#GlobalConfiguration. This is a convenient way to share the installation of plugins across several, but not all, environments.
     58
     59==== From source
     60
     61`easy_install` and `pip` make installing from source a snap. Just give it the URL to either a repository or a tarball/zip of the source:
     62{{{#!sh
     63$ easy_install https://trac-hacks.org/svn/tagsplugin/trunk
     64}}}
     65{{{#!sh
     66$ pip install svn+https://trac-hacks.org/svn/tagsplugin/trunk
     67}}}
     68When installing from a repository using `pip`, be sure to use the repository type in the protocol. For example, `svn+https` for Subversion and `git+https` for Git.
     69
     70==== Enabling the plugin
     71
     72Unlike plugins installed per environment, you'll have to explicitly enable globally installed plugins via [TracIni trac.ini]. This also applies to plugins installed in the shared plugins directory, ie the path specified in the [TracIni#inherit-plugins_dir-option "[inherit] plugins_dir"] configuration option.
     73
     74This is done in the [TracIni#components-section "[components]"] section of the configuration file `trac.ini`. For example:
     75{{{#!ini
    8176[components]
    82 tracspamfilter.* = enabled
    83 }}}
    84 
    85 オプションの名前はプラグインの Python パッケージ名です。これはプラグインのドキュメンテーションに指定されていなければいけませんが、ソースを見れば簡単に見つけることが出来ます。 (最上位のディレクトリにあるファイル `__init__.py` を探してください。)
    86 
    87 Note: プラグインのインストール後、 Web サーバを再起動する必要があります。
    88 
    89 ==== アンインストール ==== #Uninstalling
    90 
    91 `easy_install` や `python setup.py` ではアンインストール機能は提供されていません。しかし、グローバルにインストールされた egg や参照を削除するための簡単な方法があります:
    92 
    93  1. setuptools でインストールした場合、 `easy_install -m [plugin name]` を実行し、 `$PYTHONLIB/site-packages/easy-install.pth` から参照を削除します
    94  1. `/usr/bin`, `/usr/local/bin`, `C:\\Python*\\Scripts` などから実行可能ファイルを削除します。実行可能ファイルが分からない場合、 `setup.py` の `[console-script]` を参照してください
    95  1. インストールされた場所 (通常 `$PYTHONLIB/site-packages/` 配下) の .egg ファイルやディレクトリを削除します
    96  1. Web サーバを再起動します
    97 
    98 egg の場所が分らない場合、探すためには以下の方法を使います (この方法は、どのようなパッケージでも使えます)。`myplugin` の箇所は、プラグインのネームスペースで置き換えてください。ネームスペースはプラグインの有効化の時に使用した名前と同じになります:
    99 {{{
     77tractags.* = enabled
     78}}}
     79
     80The name of the option is the Python package of the plugin. This should be specified in the documentation of the plugin, but can also be easily discovered by looking at the source: look for a top-level directory that contains a file named `__init__.py`.
     81
     82After installing the plugin, you must restart your web server.
     83
     84==== Upgrading the environment
     85
     86Some plugins may require an environment upgrade. This will typically be necessary for plugins that implement `IEnvironmentSetupParticipant`. Common reasons for requiring an environment upgrade are to add tables to the database or add configuration parameters to trac.ini. A notification will be displayed when accessing Trac for the first time after installing a plugin and restarting the web server. To upgrade the environment, run the command:
     87
     88{{{#!sh
     89$ trac-admin /path/to/env upgrade
     90}}}
     91
     92A database backup will be made before upgrading the environment, unless the `--no-backup` option is specified. For more information, refer to the documentation output by `trac-admin /path/to/env help upgrade`.
     93
     94==== Redeploying static resources
     95
     96If you [TracInstall#MappingStaticResources mapped static resources] so they are served by the web server, and the plugin contains static resources (CSS, !JavaScript and image files), the resources will need to be deployed to the location on the filesystem that is served by the web server.
     97
     98Execute the `deploy` command, as was done during install and [TracUpgrade#a5.Refreshstaticresources upgrade]:
     99
     100{{{#!sh
     101$ trac-admin /path/to/env deploy /deploy/path
     102}}}
     103
     104After executing the command, you must restart your web server.
     105
     106{{{#!div style="border: 1pt dotted; margin: 1em"
     107**Note:** Some web browsers (IE, Opera) cache CSS and Javascript files, so you should instruct your users to manually erase the contents of their browser's cache. A forced refreshed (SHIFT + <F5>) should be enough.
     108{{{#!comment
     109Remove above note once #9936 is fixed.
     110}}}
     111}}}
     112
     113==== Upgrading a Plugin
     114
     115Normally, upgrading a plugin is simply a matter of repeating the install process. You may want to [#Uninstalling uninstall] old versions of the plugin.
     116
     117The `pip install` command has an `--upgrade (-U)` switch that will uninstall the old version and install the new version. The command can have some unintended side-effects though, because it will also upgrade the plugin dependencies. For example, if `Trac` is listed as a dependency of the plugin in `setup.py`, the latest version of Trac will be downloaded and installed. This may not be what you want if you are running an older version of Trac because not all your plugins are compatible with the latest version of Trac, or you simply haven't done the appropriate planning for upgrading Trac. Uninstalling and then installing the plugin can be a safer option:
     118{{{#!sh
     119$ pip uninstall <pluginname>
     120$ pip install <pluginname>
     121}}}
     122
     123Alternatively you can use a [https://pip.pypa.io/en/stable/user_guide/#requirements-files requirements file] and pin the versions of the packages that you don't want to implicitly upgrade.
     124
     125==== Uninstalling
     126
     127`pip` makes it easy to uninstall a plugin:
     128{{{#!sh
     129$ pip uninstall <pluginname>
     130}}}
     131
     132The `pip uninstall` command can be used even if the plugin was installed using `easy_install` or `python setup.py install`.
     133
     134Neither `easy_install` nor `python setup.py` have an uninstall feature. However, it is usually trivial to remove a globally installed egg and reference:
     135
     136 1. Do `easy_install -m <plugin name>` to remove references from `$PYTHONLIB/site-packages/easy-install.pth` when the plugin is installed by setuptools.
     137 1. Delete executables from `/usr/bin`, `/usr/local/bin`, or `C:\\Python*\Scripts`. To find what executables are involved, refer to the `[console-script]` section of `setup.py`.
     138 1. Delete the .egg file or folder from where it's installed, usually inside `$PYTHONLIB/site-packages/`.
     139 1. Restart the web server.
     140
     141If you are uncertain about the location of the egg file, you can try to locate it by replacing `myplugin` with whatever namespace the plugin uses (as used when enabling the plugin):
     142{{{#!pycon
    100143>>> import myplugin
    101144>>> print myplugin.__file__
     
    103146}}}
    104147
    105 == プラグインのキャッシュの設定 == #Settinguptheplugincache
    106 
    107 いくつかのプラグインは、 その内容がファイルシステム上に存在するように、Python eggs のランタイム (`pkg_resources`) によって解凍する必要があります。通常は現在のユーザのホームディレクトリの `.python-eggs` に解凍されますが、それにより問題が発生するかもしれません。その場合、環境変数 `PYTHON_EGG_CACHE` を設定してデフォルトのロケーションを上書きすることができます。
    108 
    109 `PYTHON_EGG_CACHE` を `SetEnv` ディレクティブを使用して Apache に設定する方法:
    110 {{{
    111 SetEnv PYTHON_EGG_CACHE /path/to/dir
    112 }}}
    113 
    114 これは [wiki:TracCgi CGI] と [wiki:TracModPython mod_python] のどちらをフロントエンドにしようと動作します。このディレクティブに [wiki:TracEnvironment Trac Environment] へのパスに設定し、例えば同じ `<Location>` ブロックにおいてください。
    115 
    116 例 (CGI用):
    117 {{{
    118  <Location /trac>
    119    SetEnv TRAC_ENV /path/to/projenv
    120    SetEnv PYTHON_EGG_CACHE /path/to/dir
    121  </Location>
    122 }}}
    123 
    124 例 (mod_python用):
    125 {{{
    126  <Location /trac>
    127    SetHandler mod_python
    128    ...
    129    SetEnv PYTHON_EGG_CACHE /path/to/dir
    130  </Location>
    131 }}}
    132 
    133  ''Note: !SetEnv を使用するためには、 Apache で `mod_env` モジュールが有効になっている必要があります。 `mod_python` が設定される Location ブロックでは !SetEnv ディレクティブも使用できます。''
    134 
    135 [wiki:TracFastCgi FastCGI] で、 Web サーバに設定するためには、 `-initial-env` オプションやサーバーが指定している方法で、環境変数を設定する必要があります。
    136 
    137  ''Note: プロジェクトディレクトリを設定するために、既に -initial-env を使用している場合は、 [wiki:TracFastCgi TracFastCgi] に例示されるように、必要に応じて -initial-env ディレクティブを !FastCgiConfig ディレクティブに加えてください。''
    138 
    139 {{{
    140 FastCgiConfig -initial-env TRAC_ENV=/var/lib/trac -initial-env PYTHON_EGG_CACHE=/var/lib/trac/plugin-cache
    141 }}}
    142 
    143 === Subversion の フックスクリプトについて === #Abouthookscripts
    144 
    145 もし、 Trac エンジンを呼び出すような Subversion の フックスクリプト (Trac の配布物の `/contrib` ディレクトリで提供されている post-commit フックスクリプトなど) を設定していたら、プラグインと同様にスクリプトの中で環境変数 `PYTHON_EGG_CACHE` を定義してください。
    146 
    147 == トラブルシューティング == #Troubleshooting
    148 
    149 === setuptools は正しくインストールされていますか? === #Issetuptoolsproperlyinstalled
    150 
    151 以下のコマンドを実行してみてください:
    152 {{{
     148== Setting up the plugin cache
     149
     150Some plugins will need to be extracted by the Python egg's runtime. See [wiki:TracInstall#egg-cache] for information on setting up the egg cache.
     151
     152== Web-based plugin administration
     153
     154The !WebAdmin interface offers limited support for plugin configuration to users with `TRAC_ADMIN` permission:
     155
     156* enabling and disabling installed plugins
     157* installing plugins by uploading them as eggs
     158
     159If you wish to disable the second function for security reasons, add the following to your `trac.ini` file:
     160{{{#!ini
     161[components]
     162trac.admin.web_ui.PluginAdminPanel = disabled
     163}}}
     164This disables the whole panel, so the first function will no longer be available either.
     165
     166== Writing Trac Plugins
     167
     168You can write your own Trac plugin using the following resources:
     169* [trac:TracDev Developer documentation]
     170* [https://trac-hacks.org Examples on trac-hacks.org]
     171* [trac:browser:branches/1.2-stable/sample-plugins sample-plugins]
     172
     173== Troubleshooting
     174
     175=== Is setuptools properly installed?
     176
     177Try this from the command line:
     178{{{#!sh
    153179$ python -c "import pkg_resources"
    154180}}}
    155181
    156 もし、コマンドラインから '''何も''' かえって来なければ、 setuptools はインストール '''されています'''。そうでなければ、 Trac を動かす前に setuptools をインストールする必要があります。
    157 
    158 === Python egg は正しいバージョンですか? === #DidyougetthecorrectversionofthePythonegg
    159 
    160 Python egg はファイル名の中で Python のバージョンをエンコードします。例えば、 `MyPlugin-1.0-py2.5.egg` は Python 2.5 用の Python egg であり、異なる Python のバージョン (2.4 や 2.6) で動かそうとしても '''動かない''' でしょう。
    161 
    162 また、ダウンロードした Python egg ファイル が本当に .zip アーカイブであるかどうかを確認して下さい。もし Trac サイトからダウンロードしたとしたら、 HTML プレビューページを代わりにダウンロードしているかもしれません。
    163 
    164 === プラグインは有効になっていますか? === #Isthepluginenabled
    165 
    166 グローバル領域にプラグインをインストールした場合 (Environment の `plugins` ディレクトリ内 ''ではなく'') 、 [TracIni trac.ini] に明確に有効にする設定をしなければなりません。以下の事項を確認して下さい:
    167 
    168  * ...`[components]` セクションに必要な行数を追加したか
    169  * ...パッケージ / モジュール名は正しいか
    170  * ..."enable" や "Enable" ではなく、正しい値 "enabled" になっているかどうか
    171 
    172 === Python egg ファイルのパーミッションのチェック === #Checkthepermissionsonthe.eggfile
    173 
    174 Trac は Python egg ファイルを読み込み可能でなければなりません。
    175 
    176 === ログファイルのチェック === #Checkthelogfiles
    177 
    178 Trac で [wiki:TracLogging logging] を有効にし、ログレベルを `DEBUG` に設定し、プラグインがロードされるときのログメッセージを見て下さい。
    179 
    180 === 必要な権限を持っていることを確認してください === #Verifyyouhaveproperpermissions
    181 
    182 いくつかのプラグインでは、その機能を使用するために特別な権限を要求します。たとえば [trac:WebAdmin WebAdmin] では、ナビゲーションバーに表示するためには TRAC_ADMIN 権限が必要になります。
    183 
    184 === 読み込むプラグインのバージョンを間違えていませんか ? === #Isthewrongversionofthepluginloading
    185 
    186 複数のプロジェクトがある場合に plugins ディレクトリにプラグインを置くなら、確実に正しいバージョンのプラグインがロードされていることを確認する必要があります。ここにいくつかの基本的なルールがあります:
    187 
    188  * 実行中の Trac サーバ (すなわち各々の Python プロセス) にはプラグインの 1 バージョンだけがロードできます。 Python の名前空間とモジュールリストは (プラグインが`有効 (enabled)` になっているか `無効 (disabled)` になっているかに関わらず) 全プロジェクトで共有されるでしょう。そしてそれは複製をハンドルすることができません
    189  * グローバルにインストールされたプラグイン (通常は `setup.py install`) は共有 plugins ディレクトリあるいはプロジェクト毎の plugins ディレクトリ内のどんなバージョンも無視するでしょう。グローバルにインストールされたプラグインは、他のどのプラグインよりも''先に''動作するでしょう
    190  * Trac サーバが (`TRAC_ENV_PARENT_DIR` セットアップのように) 複数のプロジェクトをホスティングした場合、異なったプロジェクトで異なるバージョンのプラグインを使用していると、どのバージョンのプラグインが使用されるかは不明です。異なるバージョンのプラグインのうちいずれか一つがロードされるでしょう。そしてロードされたプラグインは全てのプロジェクトで共有されます。 Trac は通常一番最初にリクエストを受けたプロジェクトからプラグインをロードします
    191  * Python の site-packages 内に複数のバージョンをリストしておく (すなわち `setup.py install` を使用してインストールする) のは素晴らしいことです。 - setuptools は最も新しいバージョンを確実にインストールします。しかし、複数バージョンのプラグインを共有 plugins ディレクトリや、プロジェクト毎の plugins ディレクトリに格納しないでください。 - Trac はプラグインを探すときに バージョン番号、格納された日付などを気にしません。この場合 Trac がどのプラグインを最初に見つけ出すかを確実に指定する方法はありません
    192 
    193 === 上記のすべてに失敗した場合 === #Ifalloftheabovefailed
    194 
    195 plugins に対するログが出力されず、 egg が読み込み可能であり、 Python のバージョンが正しく、 ''その上で'' egg がグローバルにインストールされて (そして trac.ini で使用可能に設定されて) ''いても''、なぜかプラグインが動かず、なんのエラーメッセージも表示されない場合は、 [trac:IrcChannel IrcChannel] で質問してください。
    196 
    197 == web ベースのプラグイン管理 == #Web-basedpluginadministration
    198 
    199 !WebAdmin プラグイン (0.11 から標準付属) を導入することで、 `TRAC_ADMIN` 権限を持ったユーザは web 上でプラグインの設定が行えるようになります:
    200 
    201 * インストールされたプラグインの有効/無効を設定する
    202 * Python egg をアップロードすることでプラグインをインストールする
    203 
    204 セキュリティ上の理由から 2 番目の機能を無効にしたいときには、`trac.ini` の `[components]` セクションに以下の一行を追記してください。
    205 {{{
    206 trac.admin.web_ui.PluginAdminPanel = disabled
    207 }}}
    208 この設定はパネル全体を無効にしてしまうため、1 番目の機能も使用できなくなります。
     182If you get '''no output''', setuptools '''is''' installed. Otherwise, you'll need to install it before plugins will work in Trac.
     183
     184=== Did you get the correct version of the Python egg?
     185
     186Python eggs have the Python version encoded in their filename. For example, `MyPlugin-1.0-py2.5.egg` is an egg for Python 2.5, and will '''not''' be loaded if you're running a different Python version (such as 2.4 or 2.6).
     187
     188Also, verify that the egg file you downloaded is indeed a .zip archive. If you downloaded it from a Trac site, chances are you downloaded the HTML preview page instead.
     189
     190=== Is the plugin enabled?
     191
     192If you install a plugin globally, ie ''not'' inside the `plugins` directory of the Trac project environment, you must explicitly enable it in [TracIni trac.ini]. Make sure that:
     193
     194 * you actually added the necessary line(s) to the `[components]` section.
     195 * the package/module names are correct and do not contain typos.
     196 * the value is "enabled", not "enable" or "Enable".
     197 * the section name is "components", not "component".
     198
     199=== Check the permissions on the .egg file
     200
     201Trac must be able to read the .egg file.
     202
     203=== Check the log files
     204
     205Enable [TracLogging logging] and set the log level to `DEBUG`, then watch the log file for messages about loading plugins.
     206
     207=== Verify you have the proper permissions
     208
     209Some plugins require you have special permissions in order to use them. !WebAdmin, for example, requires the user to have `TRAC_ADMIN` permissions for it to show up on the navigation bar.
     210
     211=== Is the wrong version of the plugin loading?
     212
     213If you put your plugins inside the `plugins` directories, and certainly if you have more than one project, you need to make sure that the correct version of the plugin is loading. Here are some basic rules:
     214
     215 * Only one version of the plugin can be loaded for each running Trac server, ie each Python process. The Python namespaces and module list will be shared, and it cannot handle duplicates. Whether a plugin is `enabled` or `disabled` makes no difference.
     216 * A globally installed plugin (typically `setup.py install`) will override any version in the global or project plugins directories. A plugin from the global plugins directory will be located ''before'' any project plugins directory.
     217 * If your Trac server hosts more than one project (as with `TRAC_ENV_PARENT_DIR` setups), having two versions of a plugin in two different projects will give unpredicatable results. Only one of them will load, and the one loaded will be shared by both projects. Trac will load the first plugin found, usually from the project that receives the first request.
     218 * Having more than one version listed inside Python site-packages is fine, ie installed with `setup.py install`, because setuptools will make sure you get the version installed most recently. However, don't store more than one version inside a global or project plugins directory: neither the version number nor the installed date will matter at all. There is no way to determine which one will be located first when Trac searches the directory for plugins.
     219
     220=== If all of the above failed
     221
     222Okay, so the logs don't mention plugins, the egg is readable, the Python version is correct, ''and'' the egg has been installed globally (and is enabled in trac.ini)... and it ''still'' doesn't work or give any error messages or any other indication as to why. Hop on the [trac:IrcChannel IrcChannel] or [trac:MailingList] and ask away!
    209223
    210224----
    211 See also TracGuide, [trac:PluginList プラグイン一覧], [trac:TracDev/ComponentArchitecture コンポーネント設計]
     225See also TracGuide, [trac:PluginList plugin list], [trac:TracDev/ComponentArchitecture component architecture].