不幸的是,这是通过setuptools/command/easy_install.py
内部的硬编码模板完成的。您可以使用已编辑的模板创建一个修补过的setuptools,但我发现没有干净的方式来从外部扩展easy_install。
每次运行easy_install时,都会重新生成文件easy_install.pth
。这是一个快速脚本,您可以在easy_install之后运行,以从easy_install.pth
中删除页眉和页脚。你可以创建一个包装外壳脚本easy_install
后立即运行此:
#!/usr/bin/env python
import sys
path = sys.argv[1]
lines = open(path, 'rb').readlines()
if lines and 'import sys' in lines[0]:
open(path, 'wb').write(''.join(lines[1:-1]) + '\n')
例子:
% easy_install gdata
% PYTHONPATH=xyz python -c 'import sys; print sys.path[:2]'
['', '/Users/pat/virt/lib/python2.6/site-packages/gdata-2.0.14-py2.6.egg']
% ./fix_path ~/virt/lib/python2.6/site-packages/easy_install.pth
% PYTHONPATH=xyz python -c 'import sys; print sys.path[:2]'
['', '/Users/pat/xyz']
更多的澄清,这里是easy-install.pth
格式:
import sys; sys.__plen = len(sys.path)
./gdata-2.0.14-py2.6.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
两个import sys
线是导致鸡蛋出现在路径开始处的罪魁祸首。我的脚本只是删除那些sys.path
-munging线。
你确定它不会拿起或可能不理想从当前目录打包?通常,'sys.path'中的第一个条目应该总是空字符串,即它会先查看当前目录。 – kynan 2013-01-12 18:27:30
不可以,因为蛋加载程序*预先放置它的路径,所以它在当前目录之前结束。 – jterrace 2013-01-12 21:19:02
在其他*站点*包之前,但在交互式运行时,'sys.path'中的第一项始终是'''',请参见[文档](http://docs.python.org/2/library /sys.html?highlight=sys.path#sys.path)。无论“PYTHONPATH”如何,都是这种情况。 – kynan 2013-01-12 23:40:08