[py-dev] [pypy-dev] py lib 0.9.0: py.test, distributed execution, microthreads ...

Martijn Faassen faassen at startifact.com
Thu Mar 8 17:05:23 CET 2007


Hey Holger,

On 3/7/07, holger krekel <holger at merlinux.de> wrote:
> Hi Martijn! (hi CCed py-dev),

> hope you are doing well!

Yes, still in Singapore actually but coming back this weekend.

> I am considering doing a py lib 0.9.1 with a particular focus
> on packaging and win32 issues.  Could you maybe provide some pointers,
> keypoints on what you think would be nice to have in this
> area?  I haven't really followed the packaging mechanisms in
> the last year and need to catch up, i guess.  Any help is
> appreciated.

I can't really tell you much about win32 issues. Concerning packaging
- it's a fairly huge issue that I only have partial experience with
too, but I'll attempt to give a few pointers based on my experience:

* The minimal thing you'd want is an entry in the cheeseshop which
points to the .tgz of the source somewhere on your site. If your
setup.py is fairly straightforward you may be in luck; tools like
easy_install (and buildout tools like zc.buildout, which can install
packages locally instead of centrally) might very well be able to
download and install the software automatically. I've even had this
happen with lxml, which means a C-compile happens successfully.

* Next, try some command like 'python setup.py sdist upload' to
automatically upload tarballs to the cheeseshop itself.

* the next step would be to look at setuptools, which is an extension
of distutils. This stuff:

http://peak.telecommunity.com/DevCenter/setuptools

It is a lot of stuff and therefore somewhat intimidating. I believe
the minimal way to start using setuptools is to replace your import in
setup.py with setuptools instead of distutils.

* once you use setuptools, you can use it to create an egg, which is
just another way to package Python code for distribution. If it's just
Python code, that's fairly simple as you get a platform independent
egg. If it's C code you'll need to do some more work in the setup.py
and eggs will be platform specific, but I believe setuptools automates
quite a bit. You can use things like 'python setup.py bdist_egg
upload' to upload the egg.

Important in all this is to keep your setup.py relatively
straightforward. Not always possible, but I've seen some setup.py's
that do all kinds of work themselves that breaks  a lot of all this,
and that's a shame. egg downloading and such starts to get nice once
you have automatic dependency management and the ability to install
eggs as a user, using tools like zc.buildout (if you need lots of
cooperating bits and pieces including things like databases and
servers) or workingenv.py (lightweight clever hack). Both
install eggs in some other place than
/usr/lib/python2.4/site-packages, which is the default and rather
ugly.

I hope these pointers help you a bit to get you on your way.

Regards,

Martijn



More information about the Pytest-dev mailing list