Sean Perry wrote: > Ok, this may be slightly above tutor's level, but hey, never hurts to > ask (-: > > I am playing with __import__(). Here is my code: > [code] > import os.path > > app_path = '/tmp/my/settings' > app_path2 = 'my/settings' > > if os.path.exists(app_path + '.py'): > print "Found", app_path > > try: > f = __import__(app_path, globals(), locals(), []) > print f.__name__, f.__file__ > except Exception, e: > print e > > if os.path.exists(app_path2 + '.py'): > print "Found", app_path2 > > try: > f = __import__(app_path2, globals(), locals(), []) > print f.__name__, f.__file__ > except Exception, e: > print e > [/code] > > The result is the first import fails and the second one works. Even > though they are the same file. > The first argument to __import__ should be a module or package name, not a file path, e.g. "my.settings". Python will look for the module in the current sys.path the same as if you used a normal import. Apparently the / is being interpreted as a . and I guess you have a file my/__init__.py so import my.settings will work but import .tmp.my.settings doesn't.
Kent > $ pwd > /tmp > $ ls > importer.py my/ > $ ls my > settings.py > $ ./importer.py > Found /tmp/my/settings > No module named /tmp/my/settings > Found my/settings > my/settings /tmp/my/settings.py > > What gives?? > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor