py2exe and CD-ROM ISO Level 1

W

Werner Merkl

Hi,


[still looking for a solution]

we have written a Python EXE program, which should run via AUTORUN.INF
from a CD/DVD (Windows of course).

For this CD/DVD we us a imaging tool from Microsoft, which seam to
generate a pure ISO 9660 level 1 image.

This means:
- Only upper case letters A-Z and numbers 0-9
- 8.3 file names

For Python 2.2 and py2exe 0.4.1 this worked fine. Today, it does not.

So:
- Is there an option to generate a py2exe program with PYTHONCASE set?
- Or do I need a wrapper? (My own C program, setting the environment
and then starting the Python EXE program.)
- Is there a tricky way to start up with code like
"import OS as os"?
- May I use my own case insensitive importer?
- Or do I need to recompile Python?


Thanks in advance
Werner
 
T

Thomas Heller

Werner Merkl said:
Hi,


[still looking for a solution]

we have written a Python EXE program, which should run via AUTORUN.INF
from a CD/DVD (Windows of course).

For this CD/DVD we us a imaging tool from Microsoft, which seam to
generate a pure ISO 9660 level 1 image.

This means:
- Only upper case letters A-Z and numbers 0-9
- 8.3 file names

For Python 2.2 and py2exe 0.4.1 this worked fine. Today, it does not.

So:
- Is there an option to generate a py2exe program with PYTHONCASE set?
- Or do I need a wrapper? (My own C program, setting the environment
and then starting the Python EXE program.)
- Is there a tricky way to start up with code like
"import OS as os"?
- May I use my own case insensitive importer?
- Or do I need to recompile Python?

What errors exactly do you get?

Although I have posted before that this wouldn't work, currently I
believe that it *should* work.
I tried the 'simple' sample in the py2exe distro, which contains a
trvivial command line program, plus a simple wxPython program, wrote
them to an ISO level 1 CD, and it worked.

1. The python modules are imported from the zip file, as long as this
has an 8.3 name, all should be fine.

2. Extension modules are loaded with imp.load_dynamic (custom loaders
are created for them, in py2exe\build_exe.py, the create_loader method).
As far as I can see, imp.load_dynamic(module_name, file_name) should
work independent of the case or spelling of 'file_name'. If the
extensions you need have filenames with more than 8 characters, you
could probably subclass the build_exe command.

Thomas
 
W

Werner Merkl

Thomas said:
Hi,


[still looking for a solution]

we have written a Python EXE program, which should run via AUTORUN.INF
from a CD/DVD (Windows of course).

For this CD/DVD we us a imaging tool from Microsoft, which seam to
generate a pure ISO 9660 level 1 image.

This means:
- Only upper case letters A-Z and numbers 0-9
- 8.3 file names

For Python 2.2 and py2exe 0.4.1 this worked fine. Today, it does not.

So:
- Is there an option to generate a py2exe program with PYTHONCASE set?
- Or do I need a wrapper? (My own C program, setting the environment
and then starting the Python EXE program.)
- Is there a tricky way to start up with code like
"import OS as os"?
- May I use my own case insensitive importer?
- Or do I need to recompile Python?


What errors exactly do you get?

Although I have posted before that this wouldn't work, currently I
believe that it *should* work.
I tried the 'simple' sample in the py2exe distro, which contains a
trvivial command line program, plus a simple wxPython program, wrote
them to an ISO level 1 CD, and it worked.

1. The python modules are imported from the zip file, as long as this
has an 8.3 name, all should be fine.

2. Extension modules are loaded with imp.load_dynamic (custom loaders
are created for them, in py2exe\build_exe.py, the create_loader method).
As far as I can see, imp.load_dynamic(module_name, file_name) should
work independent of the case or spelling of 'file_name'. If the
extensions you need have filenames with more than 8 characters, you
could probably subclass the build_exe command.

Thomas

Hi,

I recompiled my application as a console program and got following error
message:

-----------------------------------------------------------------------
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>e:\AUTORUN.EXE
Traceback (most recent call last):
File "D:\PROGS\Python23\lib\site-packages\py2exe\boot_common.py",
line 69, in ?
import linecache
zipimport.ZipImportError: can't decompress data; zlib not available
Traceback (most recent call last):
File "AutoRun.py", line 54, in ?
zipimport.ZipImportError: can't decompress data; zlib not available
-----------------------------------------------------------------------

so I removed "compressed": 1, from setup.py and it WORKS!!!
This seems to be a bug in py2exe ????

Thanks a lot
Werner

-----------------------------------------------------------------------
---------------------- part of setup.py ------------------------------
[...]
setup(
options = {"py2exe": {# create a compressed zip archive
"compressed": 1,
"optimize": 2,
"packages": ["encodings"],
"excludes": excludes}},
# The lib directory contains everything except the executables and
# the python dll.
# Can include a subdirectory name.
zipfile = "lib/shared.zip",
data_files = [('bin',glob.glob("bin/*")),
('.',['AUTORUN.INF','ReadMe.txt'])],

## windows = [AutoRun],
console = [AutoRun],
)
 
T

Thomas Heller

Werner Merkl said:
Hi,

I recompiled my application as a console program and got following
error message:

-----------------------------------------------------------------------
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>e:\AUTORUN.EXE
Traceback (most recent call last):
File "D:\PROGS\Python23\lib\site-packages\py2exe\boot_common.py",
line 69, in ?
import linecache
zipimport.ZipImportError: can't decompress data; zlib not available
Traceback (most recent call last):
File "AutoRun.py", line 54, in ?
zipimport.ZipImportError: can't decompress data; zlib not available
-----------------------------------------------------------------------

so I removed "compressed": 1, from setup.py and it WORKS!!!
Great!

This seems to be a bug in py2exe ????

The zlib module is the only one that is imported with the standard
mechanism, since it is imported when a zipfile is added to sys.path.
So, when it's filename has the wrong case the import will fail, and the
only solution would be to set PYTHONCASEOK=1 before. Unfortunately,
this cannot be done somewhere in your Pythoncode, because it's too late
then. So, if you insist on 'compressed': 1 (but why would you?) the
only solution that I see is to add
_putenv("PYTHONCASEOK=1");
to the source file start.c, somewhere in the init_with_instance
function, near line 135, and rebuild py2exe.

Thomas
 
W

Werner Merkl

Thomas said:
Hi,

I recompiled my application as a console program and got following
error message:

-----------------------------------------------------------------------
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>e:\AUTORUN.EXE
Traceback (most recent call last):
File "D:\PROGS\Python23\lib\site-packages\py2exe\boot_common.py",
line 69, in ?
import linecache
zipimport.ZipImportError: can't decompress data; zlib not available
Traceback (most recent call last):
File "AutoRun.py", line 54, in ?
zipimport.ZipImportError: can't decompress data; zlib not available
-----------------------------------------------------------------------

so I removed "compressed": 1, from setup.py and it WORKS!!!

Great!


This seems to be a bug in py2exe ????


The zlib module is the only one that is imported with the standard
mechanism, since it is imported when a zipfile is added to sys.path.
So, when it's filename has the wrong case the import will fail, and the
only solution would be to set PYTHONCASEOK=1 before. Unfortunately,
this cannot be done somewhere in your Pythoncode, because it's too late
then. So, if you insist on 'compressed': 1 (but why would you?) the
only solution that I see is to add
_putenv("PYTHONCASEOK=1");
to the source file start.c, somewhere in the init_with_instance
function, near line 135, and rebuild py2exe.

Thomas
Thank you very much for you explanation. I think, I will not use
compressed in future (normally there is enough space on a DVD or
even on a CD ;-).


regards
Werner
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,817
Latest member
DicWeils

Latest Threads

Top