This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年12月04日 00:43 by belopolsky, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| zipimport.patch | belopolsky, 2008年12月04日 01:36 | Patch against revision 67511 | ||
| Messages (6) | |||
|---|---|---|---|
| msg76859 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2008年12月04日 00:43 | |
From issue4197: """ runpy needs a non-standard PEP 302 extension to set __file__ correctly in the modules it runs. The pkgutil stuff it uses to find pure Python modules in the filesystem supports that extension, but zipimport doesn't (yet). """ -- Nick Coghlan I am working on a patch. |
|||
| msg76863 - (view) | Author: Alexander Belopolsky (belopolsky) * (Python committer) | Date: 2008年12月04日 02:01 | |
I have attached a rough patch implementing the get_filename. I deliberately copied code from get_source method that finds the filename inside the zip archive and simply prefixed that with the archive path. I could not find any detailed discussion of what get_filename is supposed to do. Pkgutil's get_filename is not documented and not unit- tested. Google search revealed an old thread at <http://mail.python.org/pipermail/python-dev/2006-April/063626.html>, but it only says """ >runpy needs a get_filename() method, so it knows what to set __file__ too - >currently its emulation supports that, but it isn't officially part of the >PEP >302 API. It sounds like maybe a new PEP is needed to document all the extensions to the importer/loader protocols. :( """ I don't think a brand new PEP is needed, but an amendment to PEP 302 would be helpful. Nick, do you have any notes on what get_filename should do in various cases? My implementation fixes one of the problems in issue4197: $ ./python.exe testmodule.zip ********************************************************************** File "testmodule.zip/__main__.py", line ?, in __main__.c Failed example: 'line 2' Expected nothing Got: 'line 2' ********************************************************************** 1 items had failures: 1 of 1 in __main__.c ***Test Failed*** 1 failures. Note that line number is still reported as '?', but there is no crash. |
|||
| msg77774 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年12月14日 01:48 | |
The spec get_filename is pretty simple: Return whatever __file__ would be set to if load_module() was called for this module. (runpy's problem is that it never actually loads the module in question, so it never gets the chance to interrogate __file__) |
|||
| msg77785 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年12月14日 10:57 | |
Fixed for 2.7 in r67750. Will be ported to 2.6, 3.0 and 3.1. |
|||
| msg77786 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2008年12月14日 10:58 | |
Correction - added as _get_filename() in that revision. Documenting it and making it public (i.e. removing the underscore) is still to be done, and will only be done for 2.7/3.1 |
|||
| msg81365 - (view) | Author: Alyssa Coghlan (ncoghlan) * (Python committer) | Date: 2009年02月08日 03:37 | |
ZipImporter.get_filename() made public in: 2.7: r69425 3.1: r69426 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:42 | admin | set | github: 48762 |
| 2009年02月08日 03:37:51 | ncoghlan | set | status: open -> closed resolution: accepted messages: + msg81365 stage: resolved |
| 2008年12月14日 10:58:24 | ncoghlan | set | messages: + msg77786 |
| 2008年12月14日 10:57:21 | ncoghlan | set | messages: + msg77785 |
| 2008年12月14日 01:48:54 | ncoghlan | set | messages: + msg77774 |
| 2008年12月09日 09:03:11 | ncoghlan | set | assignee: ncoghlan |
| 2008年12月04日 02:01:29 | belopolsky | set | messages: + msg76863 |
| 2008年12月04日 01:36:43 | belopolsky | set | files:
+ zipimport.patch keywords: + patch |
| 2008年12月04日 00:45:30 | belopolsky | set | nosy: + ncoghlan |
| 2008年12月04日 00:43:19 | belopolsky | create | |