I'm trying to resolve a few issues in working-env.py (http://svn.colorstudy.com/home/ianb/working-env.py) and I'm running into some conflicts with setuptools.
working-env.py basically works by creating another site.py, which doesn't add site-packages and other directories that I don't care for. Without setuptools this works pretty well. But because of changes in setuptools, added right around the time I wrote working-env.py, setuptools now wants to write its own site.py and doesn't like mine.
One option is to integrate setuptools' changes into my own customized site.py, and then add __boot to the top to fake setuptools out. I think that would be bothersome.
Another option would be if setuptools looked for something ahead of site. Like, say, siteoverride. Then I could put my siteoverride in place instead of site.py, let setuptools have site.py, and avoid the system site.py entirely.
Also, and this is related to a request Jim made a while ago, I'm monkeypatching setuptools currently to change the way it creates scripts, and it would be nice if this wasn't necessary. Or was easier. The monkeypatch is basically changing the script generated so that it sets sys.path before importing site.
Here's what I'm doing (in setuptools/__init__):
import setuptools.command.easy_install as easy_install
def get_script_header(script_text, executable=easy_install.sys_executable): from distutils.command.build_scripts import first_line_re first, rest = (script_text+'\n').split('\n',1) match = first_line_re.match(first) options = '' if match: script_text = rest options = match.group(1) or '' if options: options = ' '+options if options.find('-S') == -1: options += ' -S' shbang = "#!%(executable)s%(options)s\n" % locals() shbang += ("import sys, os\n" "join, dirname = os.path.join, os.path.dirname\n" "lib_dir = join(dirname(dirname(__file__)), 'lib', 'python%s.%s' % tuple(sys.version_info[:2]))\n" "sys.path.insert(0, lib_dir)\n" "import site\n") return shbang
easy_install.get_script_header = get_script_header