[Jeremy Moles] > ... > I may be missing something critical here, but I don't exactly grok what > you're saying; how is it even possible to have two instances of > PyType_vector3d? It is (like all the examples show and all the extension > modules I've done in the past) a static structure declared and assigned > to all at once, only once.
The most common cause is inconsistent import statements, with one place using package-relative import but another place explicitly specifying the package. Here's a simple pure Python example, with this directory structure: playground/ package_dir/ __init__.py source.py module.py __init__.py is empty; it just serves to make `package_dir` a package. source.py defines a single type, named Type: class Type(object): pass module.py imports source.Type in two different ways, then prints various stuff: from source import Type as one_way # package-relative import from package_dir.source import Type as another_way print one_way is another_way print one_way.__name__, another_way.__name__ print repr(one_way), repr(another_way) import sys for k, v in sys.modules.items(): if "source" in k: print k, v Now _from_ playground, run module.py: python playground/module.py This is the output, with annotations; I ran this on Windows, so expect to see backslashes <wink>: False That is, one_way is not the same object as another_way: there are two distinct instances of the Type object. Type Type Although they're distinct, they have the same __name__, "Type". <class 'source.Type'> <class 'package_dir.source.Type'> Their reprs differ, though, showing the path via which they were imported. source <module 'source' from 'C:\playground\package_dir\source.pyc'> package_dir.source <module 'package_dir.source' from 'C:\playground\package_dir\source.pyc'> That's two lines of output from crawling over sys.modules: there are two distinct instances of the entire `source` module. That's the real cause of the multiple `Type` instances. package-relative import is rarely a good idea. Are you doing that anywhere? -- http://mail.python.org/mailman/listinfo/python-list