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.

Author htrd
Recipients
Date 2002-11-27.18:24:17
SpamBayes Score
Marked as misclassified
Message-id
In-reply-to
Content
Logged In: YES 
user_id=46460

I have been working with your antipatch applied to Python
2.2.1. 

That original test no longer works as-is. It includes a file
b.n.py which should never be imported, but used to be picked
up incorrectly by the frozen interpreter. Today, bad things
happen if I move that file to a.b.py. Same effect -
different filename. 

(Im not sure why the change has happened.)

This effect is easy to see using strace on linux. The
interpreter tries to load modules from many paths before
looking in the frozen module table. The behavior of my
frozen program would change should any of these files exist.

I think we have a fundamental incompatability here, because
this is exactly your desired behaviour.  You want a frozen
"import b" in a module in a package called "a" to be able to
load the modules "a.b" from an external file with a funny
name. I want a frozen program to *never* look outside the
frozen modules. I think both requirements are valid. Do we
need a new flag to control this behavior?

Sample strace output from my original test case:

stat64("./a.b", 0xbfffde8c)             = -1 ENOENT (No such
file or directory)
open("./a.b.so", O_RDONLY|O_LARGEFILE)  = -1 ENOENT (No such
file or directory)
open("./a.bmodule.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No
such file or directory)
open("./a.b.py", O_RDONLY|O_LARGEFILE)  = -1 ENOENT (No such
file or directory)
open("./a.b.pyc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such
file or directory)
stat64("/home/tdickenson/projects/GeminiPythonProjects/a.b",
0xbfffde8c) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/projects/GeminiPythonProjects/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/projects/GeminiPythonProjects/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/projects/GeminiPythonProjects/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/projects/GeminiPythonProjects/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/home/tdickenson/lib/python/a.b", 0xbfffde8c) = -1
ENOENT (No such file or directory)
open("/home/tdickenson/lib/python/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/lib/python/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/lib/python/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/lib/python/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/a.b",
0xbfffde8c) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/plat-linux2/a.b",
0xbfffde8c) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/plat-linux2/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/plat-linux2/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/plat-linux2/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/plat-linux2/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-tk/a.b",
0xbfffde8c) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-tk/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-tk/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-tk/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-tk/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-dynload/a.b",
0xbfffde8c) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-dynload/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-dynload/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-dynload/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/lib-dynload/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
stat64("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/site-packages/a.b",
0xbfffde8c) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/site-packages/a.b.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/site-packages/a.bmodule.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/site-packages/a.b.py",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/tdickenson/Python-2.2.1/inst/lib/python2.2/site-packages/a.b.pyc",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)


 
History
Date User Action Args
2007-08-23 15:04:49adminlinkissue416704 messages
2007-08-23 15:04:49admincreate