⇤ ← Revision 1 as of 2004-08-09 14:37:23
Size: 2145
Comment:
|
Size: 2161
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 70: | Line 70: |
{{{ #!python |
|
Line 72: | Line 73: |
}}} |
The Problem
I use [http://www.pythonware.com/products/pil/ PIL] from pythonware. It has some very dynamic initialising routines.
excerpt out of Image.py
1 def init():
2 "Load all file format drivers."
3
4 global _initialized
5 if _initialized >= 2:
6 return
7
8 visited = {}
9
10 directories = sys.path
11
12 try:
13 directories = directories + [os.path.dirname(__file__)]
14 except NameError:
15 pass
16
17 # only check directories (including current, if present in the path)
18 for directory in filter(isDirectory, directories):
19 fullpath = os.path.abspath(directory)
20 if visited.has_key(fullpath):
21 continue
22 for file in os.listdir(directory):
23 if file[-14:] == "ImagePlugin.py":
24 f, e = os.path.splitext(file)
25 try:
26 sys.path.insert(0, directory)
27 try:
28 __import__(f, globals(), locals(), [])
29 finally:
30 del sys.path[0]
31 except ImportError:
32 if DEBUG:
33 print "Image: failed to import",
34 print f, ":", sys.exc_value
35 visited[fullpath] = None
36
37 if OPEN or SAVE:
38 _initialized = 2
main problem with all this stuff: all this directory-voodoo is out of access when using py2exe. Maybe it is fixable by doing very strange things I do not know about.
Explanation
PIL tries to automagically learn which Image-Plugins are available. "available" is well defined as long it is a Python standard installation. "available" gets very vague when using py2exe.
Solution
Make it dumb.
before using PIL, I manually import Image and also the needed *ImagePlugins
1 [...] could be JpegImagePlugin, BmpImagePlugin etc.
Finally I force Image to believe it is fully initialized, so nobody tries directory scanning.
HAM2004-08-09