Difference between revisions of "Plugindirectory"

From PyMOLWiki
Jump to: navigation, search
(Example of use)
(Example of use)
Line 67: Line 67:
 
= This plugin is being used in the Pymol-script-repo project =
 
= This plugin is being used in the Pymol-script-repo project =
  
== Example of use ==
+
== Adding Pymol-script-repo to PyMOL search path ==
[http://www.pymolwiki.org/index.php/Git_install#Adding_Pymol-script-repo_to_PyMOL_search_path If you have '''Pymol-script-repo''' added to your path, you don't have to do anything.]
+
You now have to add the "Pymol-script-repo" directory to the PyMOL search path, and import folder "plugins" before use
 +
=== For windows users ===
 +
# Open notepad
 +
# Write (Remember forward slashes)
 +
import sys
 +
sys.path.append('C:/Users/YOURNAME/Documents/Pymol-script-repo')
 +
import plugins
 +
Save under: '''C:/Users/YOURNAME/pymolrc.pym''' (Set: "Save as type" to "All files")
  
Write in PyMOL
+
=== For Ubuntu/Mint users ===
<syntaxhighlight lang="python">
+
gedit ~/.pymolrc
import plugins
+
Write
help(plugins)
+
import sys
</syntaxhighlight>
+
sys.path.append('/home/YOURNAME/Software/pymol/Pymol-script-repo')
 +
import plugins
 +
Save and exit
  
 
== Python Code ==
 
== Python Code ==

Revision as of 12:08, 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

Adding Pymol-script-repo to PyMOL search path

You now have to add the "Pymol-script-repo" directory to the PyMOL search path, and import folder "plugins" before use

For windows users

  1. Open notepad
  2. Write (Remember forward slashes)
import sys
sys.path.append('C:/Users/YOURNAME/Documents/Pymol-script-repo')
import plugins

Save under: C:/Users/YOURNAME/pymolrc.pym (Set: "Save as type" to "All files")

For Ubuntu/Mint users

gedit ~/.pymolrc

Write

import sys
sys.path.append('/home/YOURNAME/Software/pymol/Pymol-script-repo')
import plugins

Save and exit

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