Steven D'Aprano wrote: > Ah, I think I have a partial answer... but not a complete answer. > > > On Mon, 07 Jul 2014 07:57:21 +0000, Steven D'Aprano wrote: > >> Can anyone explain how "import pg" can end up coming from pgmodule.so? >> >> >> Sure enough: >> >>>>> import pg >>>>> pg.__file__ >> '/usr/local/lib/python2.6/dist-packages/pgmodule.so' > > > > I've looked inside the pgmodule.c source code, and it includes this > snippet: > > > extern void > initpg(void) > { > char *p; > int i; > > Py_InitModule("pg", pg_methods); > > > which suggests that the pgmodule.so file creates a module called "pg". > What I don't understand is how "import pg" gets turned into "run > pgmodule.so"?
It seems the suffix "module.so" is tried automagically by the import machinery: $ touch alphamodule.so $ python Python 2.7.5+ (default, Feb 27 2014, 19:37:08) [GCC 4.8.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import alpha Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: ./alphamodule.so: file too short -- https://mail.python.org/mailman/listinfo/python-list