[Pythonmac-SIG] py2app question: path to included python

Russell E Owen rowen at u.washington.edu
Wed Jun 7 21:47:49 CEST 2006


At 9:26 PM +0200 2006-06-07, Ronald Oussoren wrote:
>On 7-jun-2006, at 18:24, Russell E. Owen wrote:
>
>>
>>>...
>>>What shortcut links? Py2app special-cases the python framework because we
>>>know how it is structured and know what parts must be copied into the
>>>application to get a working bundle.
>>
>>For Tcl/Tk, one may put extension libraries (such as snack) into:
>>.../Contents/Framework/Tcl.Framework/Resources
>>That works because Resources is a link. The full path (without links) is:
>>.../Contents/Framework/Tcl/Framework/Versions/8.4/Resources
>>
>>which would you rather use, especially since the version number may
>>change?!!!
>>
>>Unfortunately one cannot play a similar trick with python. The main
>>installation of python has various useful shortcut links, but py2app
>>doesn't copy them.
>
>That's because the running application doesn't actually need the 
>link. The easiest way out of this would be to check if a latest 
>version of matplotlib behaves more sensibly, if it does we don't 
>have to look for other ways to get this to work. Either way a recipe 
>would be the best way to solve this: get this into py2app and no 
>other user of matplotlib has to worry about this in the future.

I agree.

>...Do you have a python application that uses additional tcl/tk 
>files? If so it might be worthwhile to teach py2app about this, that 
>is an additional option to the 'py2app' distutils command that can 
>be used to specify the Tcl/Tk extensions that should be copied into 
>the framework. Bob has the last word on this of course, but I 
>wouldn't mind if such functionality would get into py2app (and 
>especially if I don't have to do the work ;-))

Yes indeed. It uses the snack sound library (I wish there was a 
cross-platform python sound library I could use instead). But I'm 
sure other users of Tkinter have other extensions they like.

>What is required to add Tcl/Tk extensions to the application bundle?

Tcl additions are found in /Library/Tcl/ and are often folders of 
files. These need to be copied to:
.../Contents/Frameworks/Tcl.framework/Resources

I found it by asking tcl for the relevant path. As I recall, tcl only 
looks in one directory for extensions (though I hope I'm wrong; that 
seems hard to believe). I certainly tried to find a more convenient 
location, but no luck so far.

As I mentioned before, if one uses the dataFiles argument, then one 
must not specify the final destination, as this messes up copying of 
Tcl.framework (due to a directory being created that should be a 
link). Instead, I first copy the files to a simple location and then 
move it. That issue *might* be avoided by specifying the full 
non-linked path to the destination, e.g.:
   .../Contents/Frameworks/Tcl/framework/Versions/8.4/Resources
but that sounds painful.

So built-in support would certainly be more convenient!

-- Russell


More information about the Pythonmac-SIG mailing list