[PEAK] Packaging peak apps

Roché Compaan roche at upfrontsystems.co.za
Wed Sep 29 08:39:32 EDT 2004


Phillip J. Eby wrote:
> At 10:31 AM 9/28/04 +0200, Roché Compaan wrote:
> 
>> Phillip J. Eby wrote:
>>
>>> At 10:43 AM 9/27/04 +0200, Roché Compaan wrote:
>>>
>>>> Basically the peak script:
>>>>
>>>> from peak.running import commands
>>>> commands.runMain( commands.Bootstrap )
>>>>
>>>> I am building an exe from run.py with py2exe for testing purposes. I 
>>>> end up with run.exe. I get the traceback when calling run.exe from 
>>>> the command line.
>>>
>>>
>>> And this is with an up-to-date CVS version of PEAK?  And 
>>> 'peak/binding/__init__.py' and 'peak/binding/interfaces.py' are in 
>>> the zipfile bound to run.exe?
>>
>>
>> Yep.
>>
>>> Better yet...  can you give me a location to download your run.exe so 
>>> I can investigate?  Thanks.
>>
>>
>> Attached is a zip of the whole "dist" directory, containing 
>> library.zip and run.exe.
> 
> 
> As far as I can tell, the issues are caused by the lack of reloading 
> support for zipfiles, coupled with the absence of various required 
> modules from library.zip.  (For example, library.zip doesn't contain 
> peak.binding.api, so that doesn't work.)
> 
> Also note that even if your script got to the second line, it would then 
> run afoul of the fact that 'config.fileNearModule()' will be broken when 
> the modules are in a zipfile.
> 
> Really, to run from a zipfile, you not only need the currently 
> non-existent Python 2.3.5, but also a version of PEAK that doesn't use 
> fileNearModule() in its present form.
> 
> My recommendation to you is to try using the procedure at:
> 
>    http://peak.telecommunity.com/DevCenter/DistributePeakApplications
> 
> but simply delete the .py files to obfuscate the source.
> 
> If you can't use this approach, you might try having your application 
> extract library.zip to a library directory (if it isn't already), and 
> then replace 'library.zip' in sys.path with the name of the library 
> directory before doing any other imports.  This isn't perfect, but it 
> might do the trick if you don't want to build your own executable as 
> described on the Wiki.

It does! And it is fairly simple to do. I basically built the distro 
with py2exe, extracted library.zip to a folder named library.zip and 
copied in missing packages and modules. I've only tested this by making 
an exe for the peak script and it seems to work fine.


-- 
Roché Compaan
Upfront Systems                 http://www.upfrontsystems.co.za



More information about the PEAK mailing list