Plugindirectory: Difference between revisions
Line 70: | Line 70: | ||
== Example of use == | == Example of use == | ||
If you have '''Pymol-script-repo''' added to your path. [http://www.pymolwiki.org/index.php/Git_install#Adding_Pymol-script-repo_to_PyMOL_search_path See here how to.] | If you have '''Pymol-script-repo''' added to your path, you don't have to do anything. [http://www.pymolwiki.org/index.php/Git_install#Adding_Pymol-script-repo_to_PyMOL_search_path See here how to do this.] | ||
Then in PyMOL write | |||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
import plugins | import plugins |
Revision as of 11:03, 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 script is used in
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