[triangle-zpug] can't find font problem

David Handy david at handysoftware.com
Mon Mar 31 03:57:54 CEST 2008


On Sun, Mar 30, 2008 at 06:21:35AM -0700, Joseph Mack NA3T wrote:
> There's demo code out there eg
> 
> http://www.pythonware.com/library/pil/handbook/imagefont.htm
> 
> http://www.livibetter.com/blog/2006/11/24/making-pil-font-for-python-image-library/
> 
> (look for "arial.pil")
> 
> that finds the font without doing anything special. I 
> thought that maybe there was some font path or python path 
> that allowed python to find the file without me having to do 
> anything.

In these examples, they are loading "arial.pil" from the current working
directory, whatever that happens to be at the time the script is run. That
is not production-quality code, it was simplified for demo purposes.

> I moved the files from directory to directory, hoping they'd 
> be picked up by the load command. Their current location is 
> just where they are now. If there's a canonical location, 
> I'd be happy to move them there.

Typically, I put font files with my application.  Any Python application
more complicated than a single .py file I usually put into a Python package
directory (a directory with an __init__.py file, see
http://docs.python.org/tut/node8.html#SECTION008400000000000000000). I throw
the fonts and other static data files in the same package directory as the
.py files, and then use the technique I described in my previous email to
locate the package directory, and load files relative to that directory.

Example file layout:

ApplicationHome/
    myapp.bat:
        python startapp.py
    myapp.sh:
        #!/bin/sh
        python startup.py
    startapp.py:
        import myapp.mainmodule
        myapp.mainmodule.main()
    myapp/
        __init__.py
        mainmodule.py:
            def main():
                ...
        *.py
        *.pil
        *.gif
        *.dat
        etc.

I don't know if this is "canonical", but I've seen a lot of Python
applications deployed this way. Using this technique, it is pretty easy to
make your applications cross-platform compatible. Just zip up
ApplicationHome and you've got something you can take to another machine and
run.

David H

-- 
David Handy
Computer Programming is Fun!
Beginning Computer Programming with Python
http://www.handysoftware.com/cpif/




More information about the TriZPUG mailing list