many thanks. wrt import and what's named, in the case of the PIL library, the import statement can be import Image # not import PIL my presumption is that the PIL whatever-it-is contains a set of whatever-they-are, one of which is named Image. I like to use proper terminology, by way of explaining my avoidance above. Might help to know I very much liked working in assembler and infer possible assembler correspondences when I wonder about code behavior. Your rundown of search order is helpful. more thanks. jim
On Aug 14, 2006, at 7:52 PM, Luke Paireepinart wrote: > jim stockford wrote: > Hi Jim. >> For example, >> import os >> import sys >> >> My take is that one uses the import keyword in a >> program. >> The Python interpreter reads the program and >> generates machine code. >> The import keyword directs the Python interpreter >> to find some library (which is not necessarily named, >> certainly not necessarily named in the import >> statement), get some portion of machine code from >> the library, bind that machine code in current >> program's process space, and integrate the names >> of the imported machine code with the program's >> namespace (probably keeping the namespace of >> the imported code as a separate name domain). >> > I don't know when code is converted to machine code, but here's how I > think > import works. > you say 'find some library ... not necessarily named in the import > statement.' > I don't know what you mean by this. > If the user says 'import os' > first python checks for > 'os.pyc' in the current working directory. > if it doesn't find this, it looks if 'os.py' is there. > If not, then it checks the PYTHONPATH (I believe) > for 'os.pyc' and 'os.py' files. > > When the user says 'import x' the name of the > actual filename will be x.pyc or x.py > for example: > > #---- config.py in C:/exprog > a = 'hi' > b = 'hello' > #---- > > #---- main.py in C:/exprog > import config > print config.a > print config.b > #---- > > when I run main.py for the first time, it looks for > 'config.pyc' because of the 'import config' line. > It doesn't find it, so it compiles 'config.py' into 'config.pyc' > and then imports it. Note that it's not in the global namespace > unless I say 'from config import *' > instead, you have to reference values stored in the 'config' module > using the 'config. ' syntax. > > if I were to delete config.py and config.pyc, it would look in > C:/python24/Lib/site-packages/ for a 'config.py' and 'config.pyc' > because that's where my python is installed. > > At least that's how I think import works :) >> I'm just guessing, of course. Can anyone explain >> what is really going on under the hood? I'll be >> grateful for a description of the behavior. >> >> newbie >> >> _______________________________________________ >> Tutor maillist - Tutor@python.org >> http://mail.python.org/mailman/listinfo/tutor >> >> > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor