[EMAIL PROTECTED] wrote:
On Mon, Apr 21, 2008 at 3:39 PM, John Machin <[EMAIL PROTECTED]> wrote:
[EMAIL PROTECTED] wrote:
data['module'], in the directory data['cwd']
 OT: Any good reason for using a dictionary instead of a class instance
(data.functiom, data.module, etc)?
not really, i just wanted to stick to primitive python data types.


If I do this from python interactive shell (linux fedora core 8) from
dir /home/mark it works fine:

           cwd = data['cwd']
           os.chdir(cwd)
           print os.getcwd()
           module = __import__(data['module'])
           function = getattr(module, data['function'])



 saved = sys.path
 sys.path = data['cwd']
 module = __import__(data['module'])
 sys.path = saved

now the module gets loaded, but i am not able to get the function from
the module, though it works fine in the interactive-shell

Traceback (most recent call last):
  File "/home/mark/work/common/funcq.py", line 62, in <module>
    if __name__ == '__main__':do()
  File "/home/mark/work/common/funcq.py", line 35, in do
    function = getattr(module, data['function'])
AttributeError: 'module' object has no attribute 'new'


this works in shell though..
import os
os.chdir('/home/mark/work/proj1')
import sys
sys.path.append('/home/mark/work/proj1')
module = __import__('app')
function = getattr(module, 'new')
function(1)
1

It's not at all obvious that the "works in shell" code is the same as the code in your script.

Consider the possibility that as a result of frantic experimentation you have multiple copies of app.* with varying contents lying around.

Try this in your script so that you can see exactly what it is doing, instead of comparing it to a strawman:
   print "attempting to import", whatever
   module = __import__(whatever)
   print "got", module.__name__, "from", os.path.abspath(module.__file__)
   print "module contents":, dir(module)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to