The directory that module is in must by on your python
path in order to import it.
That's not exactly correct. You *can* import from files that aren't in
your sys.path. What follows is a full-working (with python 2.5)
example. Perhaps ihooks is going to be obsolete at some point, but it
works now. See PEP 302 for more info. (I'm not sure how to modify this
example to work with a newer import mechanism or else I would provide it
to you.)
import os
def writefile(f, data, perms=750): open(f, 'w').write(data) and
os.chmod(f, perms)
foobar = """
print "this is from the foobar module"
def x():
print "This is the x function."
"""
writefile('/tmp/foobar.py', foobar)
# File:ihooks-example-1.py
import ihooks, imp, os, sys
def import_from(filename):
"Import module from a named file"
if not os.path.exists(filename):
sys.stderr.write( "WARNING: Cannot import file." )
loader = ihooks.BasicModuleLoader()
path, file = os.path.split(filename)
name, ext = os.path.splitext(file)
m = loader.find_module_in_dir(name, path)
if not m:
raise ImportError, name
m = loader.load_module(name, m)
return m
foo = import_from("/tmp/foobar.py")
print foo.x
print foo.x()
print foo.x()
You can do it by modifying
sys.path or by setting the PYTHONPATH env variable.
$ mkdir otherdir
$ cat > otherdir/amod.py
def afunc():
return 'found'
$ python
Traceback (most recent call last):
'found'
--
Shane Geiger
IT Director
National Council on Economic Education
(e-mail address removed) | 402-438-8958 |
http://www.ncee.net
Leading the Campaign for Economic and Financial Literacy