Archive

Posts Tagged ‘package’

call a function by knowing its name as a string

June 24, 2014 Leave a comment

Problem
I want to call a function but its name is stored in a string. How to do that?

Solution
I wanted to create a menu where the user can select which entry to call. It looks like this:

(1)[r] radio
(2)[ctd] create temp. directory
--------
[m] menu
[q] <

In Python I stored it like this:

menu = OrderedDict()
menu[(1, 'r')] = ('radio', 'apps.radio.radio_player')
menu[(2, 'ctd')] = ('create temp. directory', 'apps.temp_folder.create_temp_folder')

That is, if the user selects “1“, then apps.radio.radio_player() must be called.

Here is the method that can call the appropriate function:

import importlib

def start_app(val):
    """
    Call a function by name (string).
    
    Tip from here: http://stackoverflow.com/questions/3061 .
    """ 
    _, to_call = val
    function_string = to_call # ex.: 'apps.radio.radio_player'
    mod_name, func_name = function_string.rsplit('.', 1)
    mod = importlib.import_module(mod_name)
    func = getattr(mod, func_name)
    func()

The tip is from here.

Extra packages in PyPI

March 16, 2011 Leave a comment

The Python Package Index (PyPI) is a repository of software for the Python programming language. There are currently 13,756 packages here…
…to use a package from this index either “pip install package” or download, unpack and “python setup.py install” it.
” (source)

The easiest way is to use the pip installer:

sudo pip install <package_name>
Categories: python Tags: , , ,