[Distutils] Are egg files needed when building/installing via --root?

zooko zooko at zooko.com
Mon Dec 1 04:17:14 CET 2008


On Nov 30, 2008, at 17:39 PM, Josselin Mouette wrote:

> When stripping .egg-info files, you run into problems with useless  
> code that checks for dependencies (while the packaging system  
> already checks for them), so you have to strip such code as well.

Let's put it like this: as the author of an application and some  
libraries written in Python, I would like it if my code could run on  
$operating_system_distribution even before someone has gotten around  
to packaging it for $operating_system_distribution.  Therefore, I  
need a way to tell whether some dependency is already installed.  I  
could write a giant switch statement for all known package management  
tools:

if platform.dist()[0] == 'debian':
	os.system("dpkg --list...")
elif platform.dist()[0] == 'redhat':
	os.system("rpm -q...")
elif platform.system() == 'windows':
	import win32api
	# probe registry ???
... etc

My code currently runs on nine operating systems and I hope to  
support a lot more before I'm through, so this switch statement would  
be a significant undertaking to support my users on various platforms.

Fortunately, pkg_resources does this for me in a generic, cross- 
platform way so that my workload is substantially reduced:

pkg_resources.require('my_dependency >= 1.0')

Note, this didn't use to work so well on some Linux distributions  
back in the bad old days when they removed .egg-info files, but  
nowadays it works very well on all of the aforementioned nine  
operating system distributions that I am aware of.

Now, you as a Debian developer may feel that you would have developed  
my application differently than me, such as perhaps step 1: make the  
code run on $operating_system_distribution even before it has been  
packaged for $operating_system_distribution, or you may not, but  
either way I truly appreciate that nowadays you preserve the .egg- 
info files so that I have the option of doing it this way.

Regards,

Zooko


More information about the Distutils-SIG mailing list