If I have packages installed from easy_install, the eggs are prepended to sys.path before the items in the PYTHONPATH variable.
For example, if I have an egg package called foo installed as well as a package called foo in the current directory, and then do this:
PYTHONPATH="." python
>>> import foo
This will use the egg version of foo instead of the local directory. Inspecting sys.path shows that eggs are placed before items from PYTHONPATH. This seems broken. Is there any way to override this behavior?
Unfortunately this is done with a hard-coded template deep inside
setuptools/command/easy_install.py. You could create a patched setuptools with an edited template, but I’ve found no clean way to extend easy_install from the outside.Each time easy_install runs it will regenerate the file
easy_install.pth. Here is a quick script which you can run after easy_install, to remove the header and footer fromeasy_install.pth. You could create a wrapper shell script to run this immediately aftereasy_install:Example:
For more clarification, here is the format of
easy-install.pth:The two
import syslines are the culprit causing the eggs to appear at the start of the path. My script just removes thosesys.path-munging lines.