This is a read-only mirror of pymolwiki.org
Difference between revisions of "Plugindirectory"
Line 64: | Line 64: | ||
python end | python end | ||
</source> | </source> | ||
− | |||
− | |||
= This plugin is being used in the Pymol-script-repo project = | = This plugin is being used in the Pymol-script-repo project = |
Revision as of 16:04, 3 December 2011
This page describes how to set up a personal plugin directory. It supports single python files as well as directories which contain a __init__.py file.
1) Create a directory $HOME/.pymol/pymolplugins, this will be your personal plugin directory. Copy plugins here instead of using the "Plugin > Manage Plugins > Install..." menu.
2) Create a file $HOME/.pymol/pymolplugins/__init__.py with the folling content:
'''
PyMOL personal plugin directory
Recommended location of this file: ~/.pymol/pymolplugins/__init__.py
'''
import os, sys, traceback
# import pymolplugins (allow different name)
pymolplugins = sys.modules[__name__]
import pmg_tk.PMGApp
x__initializePlugins = pmg_tk.PMGApp.initializePlugins
def initializePlugins(self):
'''
Overloaded version of pmg_tk.PMGApp.initializePlugins
See pmg_tk/PMGApp.py
'''
# load global plugins
x__initializePlugins(self)
# load user plugins
modules = set()
for path in pymolplugins.__path__:
for filename in os.listdir(path):
name, _, ext = filename.partition('.')
if ext not in ['py', 'pyc', 'pyo']:
if os.path.isdir(os.path.join(path, filename)):
modules.add(filename)
elif name != '__init__':
modules.add(name)
for name in modules:
mod_name = pymolplugins.__name__ + '.' + name
try:
__import__(mod_name, level=0)
mod = sys.modules[mod_name]
if hasattr(mod,'__init_plugin__'):
mod.__init_plugin__(self)
elif hasattr(mod,'__init__'):
mod.__init__(self)
except:
print "Exception in plugin '%s' -- Traceback follows..."%name
traceback.print_exc()
print "Error: unable to initialize plugin '%s'."%name
# overload method
pmg_tk.PMGApp.initializePlugins = initializePlugins
3) We need to import pymolplugins before the GUI launches, so insert into your $HOME/.pymolrc file:
python
import sys, os
sys.path.append(os.path.expanduser('~/.pymol'))
import pymolplugins
python end
This plugin is being used in the Pymol-script-repo project
Example of use
If you have Pymol-script-repo added to your path, you don't have to do anything. See here how to do this.
Then in PyMOL write
import plugins
help(plugins)
Python Code
This code has been put under version control. In the project, Pymol-script-repo.
For a color coded view:
https://github.com/Pymol-Scripts/Pymol-script-repo/blob/master/__init__.py