[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