Martin MOKREJŠ
mmokrejs at ribosome.natur.cuni.cz
Fri Nov 11 05:45:42 EST 2005
Graham, how can I improt just a single funtion from a module (3.2.2b)? I used to have: import os # from cElementTree import parse from elementtree.ElementTree import parse import helper_functions from sql_io import cField I'd like to have: try: from mod_python import apache _directory = os.path.dirname(__file__) for _my_modulename in ['helper_functions']: __dict__[_my_modulename] = apache.import_module(_my_modulename, path=[_directory]) except: # without raise import helper_functions from sql_io import cField # is this possible? I do not want to import the whole file. TIA Martin Graham Dumpleton wrote: > =?windows-1252?Q?Martin_MOKREJ=8A?= wrote .. > >>>Because of problems with mixing "import" with the mod_python module >>>loader, you are actually better of using: >>> >>> from mod_python import apache >>> import os >>> >>> directory = os.path.dirname(__file__) >>> >>> web_settings = apache.import_module("web_settings",path=[directory]) >>> >>>Here you are explicitly telling it which directory to get the module >>>from and avoid all problems with things not being found in the Python >>>module search path. You should only use this for loading in your own >>>modules though, not standard Python modules. >> >>Graham, how can I fork the code so that for normal "console" use it would >>do >>normal import and that when running under mod_apache it would run this >>trick? >>I use the modules also for command-line tests and some utilities. >>What variable should I look for in __dict__.keys()? ;-) > > > You could use: > > try: > from mod_python import apache > directory = os.path.dirname(__file__) > web_settings = apache.import_module("web_settings",path=[directory]) > except: > import web_settings > > The import of "apache" from a command line script will fail and thus > it will fall through to normal "import" statement for importing web_settings. > > There are cleaner ways, but it gets quite complicated and the mod_python > module importing system as implemented by apache.import_module() has > some problems at the moment which makes it even worse. This all might > get solved in a future version of mod_python and at that point the cleaner > way may be available. > > Graham > > -- Martin Mokrejs Email: 'bW9rcmVqc21Acmlib3NvbWUubmF0dXIuY3VuaS5jeg==\n'.decode('base64') GPG key is at http://www.natur.cuni.cz/~mmokrejs
|