<p>这个问题很难解决,因为需求很复杂。
不管怎样,我会试着提出一些建议。在</p>
<p>关于</p>
<blockquote>
<p>Placing plugins in two different
locations: is there a standard way /
best practice (under gnu/linux, at
least) to do that?</p>
</blockquote>
<p>一个好的方法是virtualenv。Virtualenv是一个python模块,用于构建“独立的”python安装。这是让不同项目协同工作的更好方法。
你得到了一个全新的网站包,你可以把你的插件与相关的项目模块。在</p>
<p>试试看:<a href="http://pypi.python.org/pypi/virtualenv" rel="nofollow noreferrer">http://pypi.python.org/pypi/virtualenv</a></p>
<blockquote>
<p>Plugin container: what is the most
sensible choice for my goal? single
files? packages? a simple directory of
.py files?)</p>
</blockquote>
<p>一个好的方法是一个python包,它可以在导入时进行“自注册”:只需在包目录中定义一个适当的<strong>init</strong>.py</p>
<p>例如<a href="http://www.qgis.org/wiki/Writing_Python_Plugins" rel="nofollow noreferrer">http://www.qgis.org/wiki/Writing_Python_Plugins</a>
以及这里描述的API <a href="http://twistedmatrix.com/documents/current/core/howto/plugin.html" rel="nofollow noreferrer">http://twistedmatrix.com/documents/current/core/howto/plugin.html</a></p>
<p>另请参见<a href="http://pypi.python.org/pypi/giblets/0.2.1" rel="nofollow noreferrer">http://pypi.python.org/pypi/giblets/0.2.1</a></p>
<blockquote>
<p>Giblets is a simple plugin system
based on the component architecture of
Trac. In a nutshell, giblets allows
you to declare interfaces and discover
components that implement them without
coupling.</p>
<p>Giblets also includes plugin discovery
based on file paths or entry points
along with flexible means to manage
which components are enabled or
disabled in your application.</p>
</blockquote>