mark florisson, 14.11.2011 12:55:
On 14 November 2011 08:18, Stefan Behnel wrote:
"Martin v. Löwis", 13.11.2011 21:46:
I'm asking specifically because I'd like to properly implement __file__
in Cython modules at module init time.
Why do you need to implement __file__? Python will set it eventually to
its correct value, no?
Well, yes, eventually. However, almost all real world usages are at module
init time, not afterwards. So having CPython set it after running through
the module global code doesn't help much.
Perhaps Cython could detect use of __file__ at module scope (if this
package context function is not available), and if it's used it tries
to use something akin to imp.find_module(__name__) to find the path to
the file and set __file__ manually.
It's problematic. Depending on the import hooks that are in use, a second
search for the already loaded but not yet instantiated module may
potentially trigger a second try to load it. And if the module is already
put into sys.modules, a second search may not return a helpful result.
Also, running a full import of "imp" along the way may have additional side
effects, and the C-API doesn't have a way to just search for the path of a
module.
Would this be feasible for python < 3.3?
It would certainly not be more than a work-around, but it could be made to
work "well enough" in many cases. I'd definitely prefer having something
that really works in both 2.7.x and 3.3+ over a half-baked solution in all
of Py2.x.
Stefan
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com