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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4