Question

Looking in my /usr/local/lib/python.../dist-package directory, I have .egg directories and .egg files.

Why does the installer choose to extra packages to the .egg directory, yet leave other files with .egg extensions?

Was it helpful?

Solution

If the package contains only pure-Python code, it can stay as just an egg file. The Python interpreter can load the Python modules directly from the egg. If the package contains modules written in C or other data, then egg needs to be extracted so the C modules and/or data can be accessed. That's the default behavior of packages, I believe. Newer versions of Python might be able to load C modules from egg files; I'm not sure about that part.

The creator of the package can also specifically instruct the installer to unzip the package, by passing zip_safe = False to setup() in their setup.py.

Finally, the person doing the installing can tell easy_install explicitly to unpack eggs by passing it the -Z option or by setting zip_ok = false in the pydistutils.cfg.

OTHER TIPS

I can't explain why some eggs are zipped (the files) and some are directories, but I can offer this: if you hate zipped eggs (like I do) put this in the [easy_install] section of your ~/.pydistutils.cfg:

zip_ok = false
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top