Differences between revisions 3 and 21 (spanning 18 versions)
Revision 3 as of 2006-08-30 19:55:53
Size: 3179
Editor: nc5-rba-2
Comment: editing
Revision 21 as of 2014-05-06 15:19:52
Size: 762
Editor: 69
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Introduction to distutils =
I have recently used distutils for the first time and thought I would share what I have learned.
Line 4: Line 2:
'''Please note:''' ''I am not a pro. All this is based on my own hacking and struggling to get things to work. I am sure there will be alternative ways to do things and that I will make mistakes. Caveat Emptor.''
Line 6: Line 3:
(Based on Gnu/Linux)

== The layout of folders ==
A proper layout of your files and folders can really save you trouble later on. I use this layout:
{{{
top
|-- package
| |-- __init__.py
| |-- module.py
| `-- things
| |-- cross.png
| |-- fplogo.png
| `-- tick.png
|-- runner
|-- MANIFEST.in
|-- README
`-- setup.py
}}}

 * top - The very top of the tree is some arbitrary folder, perhaps in your home directory under pythondev. It doesn't matter.
 * package - I call it this to indicate that it's where I am developing my package(s).
 ''(Packages are simply folders with modules (py files) in them. They also have a special file called `__init__.py` so that Python will know that this folder is a package.)''
 * package/things - This is where I will keep all my things. Here I have some image files, but you can put anything your module may need here. Naturally you can use any folder name you like.
 * The other files are all in the root and will be described soon.

== The files ==
I assume that there will be a single script file that you will use to start your Python app. I call it 'runner' (without the .py) in this example. It will import the actual package. Here is the code:

''runner''
{{{
#!/usr/bin/env python2.4

##This will work in development on a relative folder basis
##It will then work when installed in site-packages on a target system
##where the runner script is in /usr/bin (or wherever)
##
##So, you don't need anything special - no fancy path tricks.

import package.module

package.module.start ()
}}}

Next is the package. In this case there is only one module in the package (import package.module), so here is the module:
''module.py''
{{{#!/usr/bin/env python2.4

import os, sys

def determine_path ():
    """Borrowed from wxglade.py"""
    try:
        root = __file__
        if os.path.islink(root):
            root = os.path.realpath(root)
        return os.path.dirname(os.path.abspath(root))
    except:
        print "I'm sorry, but something is wrong."
        print "There is no __file__ variable. Please contact the author."
        sys.exit ()
        
def start ():
    print "module is running"
    print determine_path ()
    print "My various data files and so on are:"
    files = [f for f in os.listdir(determine_path () + "/things")]
    print files
    
if __name__ == "__main__":
    print "Decide what to do"
}}}
This uses the magic variable `__file__` that will return the path and name of the module. Without it you would have to jump through some hoops to locate the module on any given distro or O/S.
 ''(If you can find this in the Python docs, then your grep-foo is better than mine. I found it by pouring through other Python apps in the site-packages folder of python2.4)''
 http://media2.picsearch.com/is?NtYwIXz54M0gd2y9NSf2SKutabqkOC4cCDIgEJFpjoY&height=223 I'm a 40 years old, married and work at the college (Environmental Studies).<<BR>>
In my free time I learn Russian. I have been twicethere and look forward to go there sometime in the future. I love to [[http://ballardwnnz.blogs.experienceproject.com/3164502.html|Beyonce Liquid Diet]] read, preferably on my beloved Kindle. I really love to watch Supernatural and Doctor Who as well as documentaries about nature. I enjoy Paintball.<<BR>>
<<BR>>
my website :: [[http://adolphzugn.newsvine.com/_news/2014/04/21/23565853-while-many-of-the-other-shake-liquid-diet-plans-come-in-vanilla-chocolate-or-strawberry-the-hollywood-diet-is-a-fruit-shake|healthy liquid diet]]

In my free time I learn Russian. I have been twicethere and look forward to go there sometime in the future. I love to Beyonce Liquid Diet read, preferably on my beloved Kindle. I really love to watch Supernatural and Doctor Who as well as documentaries about nature. I enjoy Paintball.

my website :: healthy liquid diet

Distutils/Tutorial (last edited 2016-08-31 21:42:42 by GeneWood)

Unable to edit the page? See the FrontPage for instructions.