Commits

Ian Bicking committed e427a96 Merge

merge changes

  • Participants
  • Parent commits 62da247, d7c3101

Comments (0)

Files changed (2)

File support-files/site.py

 
     sys.path.extend(paths)
 
+def force_global_eggs_after_local_site_packages():
+    """
+    Force easy_installed eggs in the global environment to get placed
+    in sys.path after all packages inside the virtualenv.  This
+    maintains the "least surprise" result that packages in the
+    virtualenv always mask global packages, never the other way
+    around.
+    
+    """
+    egginsert = getattr(sys, '__egginsert', 0)
+    for i, path in enumerate(sys.path):
+        if i > egginsert and path.startswith(sys.prefix):
+            egginsert = i
+    sys.__egginsert = egginsert + 1
+    
 def virtual_addsitepackages(known_paths):
     if not os.path.exists(os.path.join(os.path.dirname(__file__), 'no-global-site-packages.txt')):
+        force_global_eggs_after_local_site_packages()
         return addsitepackages(known_paths, sys_prefix=sys.real_prefix)
     else:
         return known_paths

File virtualenv.py

 
 ##file site.py
 SITE_PY = """
-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
+eJzVPGtz2za23/krsPRkKKUynaTdzo5T904eztY7bpKt02nuuh4tJUESa4pkCdKydufe337PAwAB
+kvKj7X64mkwsEcDBwcF544BhGL4qS5kvxKZYNJkUSibVfC3KpF4rsSwqUa/TanFYJlW9g6fz62Ql
+lagLoXYqxl5xEDz9nZ/gqfi0TpVBAb4lTV1skjqdJ1m2E+mmLKpaLsSiqdJ8JdI8rdMkS/8FPYo8
+Fk9/PwbBWS5g5VkqK3EjKwVwlSiW4uOuXhe5GDUlrvl5/Ofky/FEqHmVljV0qDTOQJF1Uge5lAtA
+E3o2CkiZ1vJQlXKeLtO57bgtmmwhyiyZS/HPf/LSqGsUBarYyO1aVlLkgAzAlACrRDzga1qJebGQ
+sRCv5TzBCfh5S6yAoU1wzxSSMS9EVuQrWFMu51KppNqJ0aypCRChLBYF4JQCBnWaZcG2qK7VGLaU
+9mMLj0TC7OEvhtkD1onz9zkHcPyQBz/m6e2EYQP3ILh6zWxTyWV6KxIECz/lrZxP9bNRuhSLdLkE
+GuT1GLsEjIASWTo7Kmk7vtE79O0RYWW5MoE5JKLMnbmRRsTBWS2STAHbNiXSSBHmb+UsTXKgRn4D
+0wFEIGkwNM8iVbWdh1YnCgBQ4T7WICUbJUabJM2BWb9P5oT2T2m+KLZqTBSA3VLil0bV7vpHAwSA
+3g4BJgFultnNJs/Sa5ntxoDAJ8C+kqrJahSIRVrJeV1UqVQEAFDbCXkLSE9EUklNQuZMI7cToj/R
+JM1xY1HAUOCxEUmyTFdNRRImlilwLnDFuw8/iLenr89evdc8ZoCxzK42gDNAoY12cIIJxFGjqqOs
+AIGOg3P8I5LFAoVshfMDXm2Ho3t3OhjB2su4O8bZcCC73lw9DayxBmVCcwU07t8wZKLWQJ//uWe/
+g+DVPqrQwvnbdl2ATObJRop1wvyFnBF8o+F8G5f1+iVwg0I4NZBK4eYgginCA5K4NBsVuRQlsFiW
+5nIcAIVm1NffRWCF90V+SHvd4QSAUAU5NDrPxjRjLmGhfVgvUV+Yzjtame4S2H3eFBUpDuD/fE66
+KEvya8JREUPxt5lcpXmOCCEvBNFBRBOr6xQ4cRGLc+pFesF0EhFrL+6JItEALyHTAU/K22RTZnLC
+4ou69W41QpPJWpi9zpjjoGdN6pV2rV3qIO+9iD93uI7QrNeVBODNzBO6ZVFMxAx0NmFTJhsWr3pb
+EOcEA/JEg5AnqCeMxe9A0VdKNRtpG5FXQLMQQwXLIsuKLZDsOAiEOMBOxij7zAmt0Ab/A1z8P5P1
+fB0EzkwWsAaFyO8DhUDAJMhcc7VGwuM2zcpdJZPmrCmKaiErmuphxD5ixB/YGdcavC9qbdR4ubjL
+xSatUSXNtMlM2eLlUc368SWvG5YBllsRzUzXlk4bXF5WrpOZNC7JTC5REvQmvbTbDnMGA3OSLa7F
+hq0MtAFZZMoWZFixoNJZ1pKcAIDBwpfkadlk1Ekhg4kEJtqUBH+ToEkvtLME7M1mOUCFxOZ7DvYH
+cPsXiNF2nQJ95gABNAxqKdi+WVpX6CC0+ijwjb4Zz/MDp54ttW3iKZdJmmkrn+TBGT08rSoS37ks
+cdREE0PBCvMaXbtVDnREMQ/DMAiMO7RT5mthv02nsyZFezedBnW1OwbuECjkAUMX72GhNB23LKti
+g80WvQvQB6CXcURwID6SopDs43rM9BIp4Grl0nRF8+twpEBVEnz84fTd2efTC3EiLlutNOmqpCuY
+8zRPgDNJqQNfdKZt1RH0RN2VovoS78BC076CSaLRJIEyqRtgP0D9U9VQMyxj7jUGp+9fvT4/nf54
+cfrD9OLs0ykgCKZCBge0ZLRwDfh8Kgb+BsZaqFibyKA3gh68fnVhHwTTVE1/Ydf4hIVd+0GXx19d
+iZMTEf2S3CRRECzkEjjzWiL/jp6S2zjm/YHlwthCm7FfijQ37dQMXowzCYrXiEYA6Ol0niVKYefp
+NAIi0ICBDwyI2fdEphzBwHLnDh1rVPBTSSBajkMm+N8AismMxiEajKI7xHQCbt7MEyW5Fy0fxk2n
+KNLT6UhPCLxO3Aj+CEtpJEwXFOkqBbePdhVFfKaKDH8ifBQSYm6MPFCJIO11ZBHfJFkj1chZ1BLQ
+X8kaQY7AIkVmkmhC+zi2HYHaS5RLfHrskROtRJo30j7cxBbVPm2Wes2V3BQ3cgHGGnfUWbb4gVog
+kiszUKWwLNADZD9YXo2fkWDcwroE2AdtDbD2hqAYghhaHHDwKHMFXM+BGMmBjhJZdZZVcZOicZrt
+dCPoVpBM1LDGEGpoBXrxHtVRhYK+Ba8pR0ptZQSyVzXs4BDeCBK106KV4pjAnaNauKKv13mxzacc
+OZ2ghI/Gdi+R0/RuYod2Cw7EO9B5gGQBgUBLNIYCLqJAZjsE5GH5sFygLPmiAAgMgyL33oFlQgNa
+IkcZOC3CGL8UxM2VRPtyY6Yg19wQw4FErbF9YMQGIcHirMRbWdFMhkbQdIOJHZL4XHcec8jiA+hQ
+MQYdPdLQuJOh3+UxKCFx7kqpMw7V/+fPn5lt1JricURshotGk7MkzRyXO9DiKbi5xoJzdE9sAFF6
+DmAapVlTHF6IomTrDfvJaQMwkRfgK67rujw+Otput7GORotqdaSWR3/+y9df/+UZK4nFgvgHluNI
+i07NxEfUhh5Q/I3RtN+anevwY5r73EiwRpKsOLkuiN9fm3RRiOPDsVUoyMWtTcD/jd0EBTI1kzKV
+gbZhi9ETdfgk/lKF4okYuX1HYzaCOqiyah2CI1JI0AYqCUbUBZgdMJLzosnryFFfSnwB6h4iuoWc
+NavITu4ZDfMDlopyOrI8cPj8CjHwOcPwldKKaopagtgizZeFQ/ofmG0SMsVaQyB5UWf3oq3dsBYz
+xF08XN6tY+MIjVlhqpA7UCL8Lg8WQNu5Lzn40X7Up13p+lHm4xkCY/oCw7zaixmh4BAuuBcTV+oc
+rkb3CqRpy6oZFIyrGkFBg0cyY2prcGT/IwSJ5t4Eh7yxugfQqZNpMvGk2QXo4c7Ts3ZdVnBcA+SB
+E/Gcnkjwx457bc94a5ssowRAh0c9qjBgb6PRThfAlyMDYCLC6seQe+ptOfvQ2RTegwFgBecMkMGW
+PWbCFtcpCg/CAXbqWf19o5nGQyBwk6j/w4ATxic8QaVAmMqRz7j7ONzSlvMkHYT3GxziKbNLJNFq
+j2x1dcegTN1pl5ZpjqrX2aN4nhXgJVqlSHzUtvu+Avnc+HjIlmkB1GRoyeF0OiFnz5O/SPfDbMuq
+wbjUDdsRo02qyLghmdbwH3gVFA5T7gJoSdAsmIcKmb+wP0Dk7Hr1lz3sYQmNDOF23eeF9AyGhmPa
+DwSSUQfvIAQ5kLAvi+Q5sjbIgMOcDfJkG5rlXuEmGLECMXMMCGkZwJ0a22G4QHgSY8KcBBQh39ZK
+luILEcL2dSX1Yar7D+VSE/COnA7kKehI+cSNop0I+qQTUfsM7cfSlFovC+DgGXg8bl7YZXPDtDbA
+B1/d19sWKVDIFPOHYxfVK0MYN/f4pxOnR0ssM4lhKG8i7wTAzDQO7HZr0LDhBoy359259GM3MMex
+o6hQL+TmFsK/qErVvFDRGO1pG2gPKD/mij5tLLbn6SyEP94GhOMrD5LMuuhgIL9Iqm2aR6Ri9ApP
+fOL10LGL9azQ0QXFO0eACqawjt5VwMJ0lnUEDI+yWpYQZCvtl/fB3rnS0MLl4aHn114ef3nVX/5k
+X07CfoaJeXpbV4lCemZMVmZbpGffwqJahMUl+U6fRunTSvTjq0JBmCc+XHwWSAhO1G2T3eOW3rIk
+YnPvmryPQR00z73k6qyO2AUQQb2FjHIUPZ4xH47sYxd3x8IeAeRRDHPHphhImk9+C5y7NgrmOFzs
+8qxIFl2hxg80f/3VdCCX5yL59VfhPbN0iDEk9qOOr2ZnplNiMbhsM6SSSUbegDMIHQHQiZe9PuWY
+VS4FaJrJrgbcQvyYdqPUW/i97r3IznwOiB4QBxezXyCaVDoBdZOkGSV8AY3DQ9RzJhDm2H4YHw/S
+3Shj0gh8imeTwVhFXT6DjYk48h73l6M9l1cmWzkQMZpPmag+Kgf6fLY9XvDOXN2jpf2yP2hL/0M6
+65GAvNWEAwR84BrM0df//5WwsmJoWlmNO1pfybv1vAH2AHW4xxG5ww3pT80nJUvjTLDcKfEUBfSp
+2NJ5JyXbwBfJAcqC/YwBOLiN+tTsTVNVfPZFcl7K6hAPgyYCSz2Mp0EVJH0wR+9ljZjYbnNKXjqF
+AcWQ6ox0OtKuJGo9yWGRXRcmiSHzm7SCsaBVRtF3H74/jfoMoKfBQcPg3H00XPJwO4VwH8G0kSZO
+9JgxTKHHDPntUhV5HNpVruY80qQINdn6hO1lBk1kObwH9+QIvCMtPuTDmG2+lvPrqaSDS2RTHOpk
+Sd9gM2JizzP9AhKVLKkKBlYyzxqkFTt6WL60bPI5JcxrCfZc1xpi7QEdR3JCaJklKzGiwQtMRmhu
+pHzFTVJpb6esCqxuE026OFqlCyF/bZIMAz25XAIueJqhm2KennIS4i2fqHLVk5LzpkrrHZAgUYU+
+DKLDV6fjbMcLHXlIct6fCYjHscfiApeN7Uy4hSGXCRf9FDguEiMxHGBO65C76Dm058UUZ51SkeCE
+keqfXNLjoDtDAQBCAArrD8c6l+O3SGpyT5xoz12iopb0SOnGngV5HAhlNMbYl3/TT58RXd7ag+Vq
+P5aru7FcdbFcDWK58rFc3Y2lKxK4sTaNYSRhKJXRzXMPnva7WQie5jSZr7kfFo9hkRhAFKUJ6IxM
+cQ2ll+vgAx8CQmrbOYGkh+3pfcpVaVXBSVENErkfTzV08GiqX53BVAugB/NSjM+2r4LBH3sUx1Rr
+MqPhLG+LpE5iTy5WWTEDsbXoTloAE9EtZuDsWX4znXG+r2Opwo///em7D++xO4IKzXk3DcNNRMOC
+Sxk9TaqV6ktTG2yUwI7U0y9VoGEa4MEDcy08ywH/97bAIiRkHLGlI+tClOABUE2J7eZWXkRR57ku
+0dDPmcn59OFEhHkdtovaQ6RXHz++ffXpVUhJoPB/Q1dgDG196XDxMT1sh77/5na3FMcxINQ6l9Ia
+P3dNHq1bjrjfxhqwHbf32VXnwYuHGOzBsNRf5X+UUrAlQKhYpwMfQ6gHBz+/K0zo0ccwYq/0yD1r
+YWfFtjmy57gojugPJaK7E/inXxhjTIEA2oUamcigDaY6St+a1zso6gB9oK/3u0OwbujVjWR8itpF
+DDiADmVtt/3un5e5Z6OnZP369K9n78/PXn989ek7xwVEV+7DxdELcfr9Z0EFA2jA2CdK8Ky8xtIU
+MCzuTQmxKOBfg+mNRVNzUhJGvT0/17n7DdbKY/Ek2pwYnnNdi4XGORrOetqHuiAFMcp0gORcSqD6
+Dbq0gPHShgviVaELLOmuwwyd1UaHXvqyibmUQgedMUgfdHZJwSC45giaqAy2NlFhxWdC+qLGAFLa
+RttKgYxyUL3zY+dExOTbvcQcDYYn7WCt6C8jF9foKlZllkIk9zKysqSHYb1Eyzj6oT3yZLyGNKAz
+HGbWHXnVe7FAq/Uy4rXp8eOW0X5tAMOWwd7CunNJ9QJUAIrVTiLCTnxyEMlb+Gq3Xu+Bgg3Do58a
+N9EwXQqrTyC4FusUAgjgyTVYX4wTAEJnJ/wE9LGTHZAFHtdHbzaLw79HmiB+759/HuheV9nhP0QJ
+UZDg2pJogJhu57cQ+MQyFqcf3o0jRo6KF8XfG6wvBoeEsnyOtFNBC5+pTkdKZktdcODrA2zQfgI1
+d4ZXsqz08GHXOEIJeKJG5DU8UYZ+Edb/WNgTXMq4AxpLpy1meAXJPZg2nwNxsZZZpqttz96en4Lv
+iNXcKEF8znMK03G+BA9VdTUWX5HqgMIjV2iukI0rdGHp2H0Re90GM7MocjTaO6m3+0TZz/6oXqqz
+SlLloj3CZTMsp545Rm6G7TA7y9zd74Z0drsR3VFymDGmHyuqa/Q5AzianiYcGEHEhBXjJtnMp4tp
+XptCtiydgzYFxQtqdQKigiTGa1HEf0XO6d6iUuY2BTwsd1W6WteYUofBMVVyY/fvX30+P3tPpdEv
+vmx97wEWnVA8MOHighOsHMOcB3xxq8GQt6bTIc7VTQgDdRD86TZx1cIJT9Abx+lF/NNt4ussJ048
+yCsANdWUXSHBMMAZNiQ9rUQwrjYaxo9bGdZi5oOhjCRWz+sCAHd9fX60PTsGhbI/pvERZxXLUtNw
+ZAa7lUrdj17jssTDlcVouBO0DkmY+cxg6HWvZV9NlPvpySLerAOM+r39OUzVUK+rXo7DbPu4hYJb
+bWl/zp2MqdNvnqMoAxFH7uCxy2TDqlh3Zw70qmt7wMQ3Gl0jiYMKPfw5D7Wf4WFiid2LVsxALBVk
+U4D5DKnvHzTgSaFdAAVCRaEjR3In46cvvDU6NuH+NWrdBRbyO1CEukSTauGLCjgRvvzK7iM3EVqo
+So9F5PgrucwLWz+En+0afcvn/hoHZYBSmSh2VZKv5IhhTQzML3xi70nEkrb1OOYy7VRLaO4GD/V2
+D4P3xWL49MRg1uGDXr9ruetqI5862GHwgoAPoUq2oN3Lph7xXu09LMDu+gh2FGGS5NdoD73uQU/D
+Qr/r14EzHPwwsYx7ae1V5zZGZBu0XzmvIGCqFR2WOFbYeIiuYW5t4ElrhUP7VFeM2N8DV1ycOlQX
+LqPgQvVWGOoOnVA//Bvn8uhaWEq1y+3VB922kDcyK8AtgogLS9N/saXp43gw1XEPXi0qSNCftTue
+5NfkIb756Wwi3rz/Af5/LT9ATIHXjibiH4CAeFNUEFvx1Te6k4xl7TUHTUWj8G4SQaM0PV/fRmfl
+o7cOPBLQ9fZ+ob3VDwJrDKsNvzMAUOQ10nXQ1jqaKnL4ba659N0w4yIN7UqoG5EM+4v/sWD+SPeM
+1/UmQ0XpJAna7bwMz8/enL6/OI3rW+Qj8zN0kgh+/QuuSB+RVngcNBH2ybzBJ1eOx/idzMoBh1HH
+XOYiAcZcIgK3vLRxFl9JT6xvnVQYOItytyjmMfYErqKbgKLeggc5dsKrey2cZ14Q1misD5FaNxYf
+AzXEz12JD6EjjdFropGEUDLDSzT8OA6HbdBEUGYX/jy93i7cxLC+DUEL7GLarnrkD7dKZ8101vBc
+ZiLUTuxOmEtjWZqozWzu3p36kAv9UgFQJ5Tpl8ukyWohc4gqKMyl292gVd3rTiwnzC2sy+kOECUq
+sm2yU06tSaJEiLOGdEEVjyQoZwZR6PfJNetevIclGr6LCNAJUYodCmeoauZrlmMOB7S66x29b9P8
+yxdRj8g8KceI89aJg3Wiy8QYrWSt188PRuPL560Zpbzs3Lv9Ny/BwriccgDqs3z69Gko/ut+y8+o
+xFlRXINLArCHAkJxTs17bLZenN2tvldrWmJgyflaXsKDK8of2+dNTsm5O4bShkj718CIcG8iy4+m
+f8cGctqq4qNW7sFHNtp2/Jin9OoQTK5IVLn6DSyYeDECRSwJuiFK1DxNIw7UYT92RYP3lDDRpvlF
+3gLHpwhmgq14RsRh5hq9KypZtNxj0TkRIQEOqYSIZ6Obj3RTB/CcftxpNKdneVq3NfbP3ONDfRe3
+tm8E0Xwlki1KhllHhxjOlTePVVvvsriTRT1vvZhfuim3ziq5+T7cgbVB0orl0mAKD80mzQtZzY1R
+xR1L52ntgDH9EA4PphehkAGKgwGUQtDwZBgWVqJt65/svriYfqCT1EMzky6gqe3LZTg9kuSdOrI4
+buenRIwlpOVb82UMs7ynxK72B7y5xJ90WhELrL078O5VrybXd9u5gqG98A5w6H0qVkFadvR0hPMS
+HwufmVY78u1VeKceHMNTwu0mreomyab6/vUUXbapPVrWeNorQndefrM+CzjUBbiah7pYGnwHU2eC
+9MRaR1OuDvG5Ds9j99qNf0OlLNDXe+HpcUz6PuPL3o4Gx55fmIsbD1H55vpAr/LexXJCVT3RuFur
+2OuFJwiRrvmitOyQh/2oKQ0s1xV+KIAMAMAfdvyiLzqnQE5pGteN7kv994B+/dVdYF0lM1g0S/l2
+X/Hoi0tuFWub8GdZNj7fGtxKlIyFuWqqBY9v5aGUsMq3N4lNrUP3QgQ0P3zJdyz4AadpEU52+ERF
+2s02HHkXrSx+d5Gq7RT8JirpUcO0QjcPywzXCbeguDblsQ2G+KpWTinakVt8gp/6erAsO8GXsiBB
+D+vr6K7l8/i71q57BHbl5uylt3b/+oVLAz12P78M0YBdUE2IB1V0Woymf4zoTvSx4HB6Q3+W9vVw
+nOUgHtSoTTRLbpK5+x0Ppw/57XJtfaBzOcLd9c6a9l4bNuzc5+Q+N/NBHD6399/odHWh2YsNFr1r
+ZMr1OlO5Wqlpgq+qmZKXQ2fLPfNl7OY7ek2JTNTOmDu8UQ8gDKvoKiC30A92HTwpfmUeH806V6cF
+TU0FTE5FlEoXHL1q2wrgYo5aabxJinBJU5hJzDeopiorcEdC/WI1PjMcKrNqgZoIapOoa4O6GTHR
+79nCKfig2ly/4ViZXRyPOkAIrsp33tvBNYLTqW0DfnnWXgRMJ5YhZN5sID6u2zvw/tlEKr51ZqBL
+V7jBTozUil2HU1zEUssfDlIYpdjvX2jz73k3d9z+G1tJxti1w7cP9nfy4pB34NArS9G+j1ch8nDu
+7Ub6j7nD6CiUoXzavmuS0N2+pMZ9F8SC3h9IERq/y0HYbq002PcQAGv8Tb+EghSzDqK4Vb/0gl/k
+xVkerBBz+Br0kHsFw6/UszqUHRiLhvPMVVT9txzgLT4y/ENv8+lxZf+9PT5ztvP7eswyby8zvqez
+peIJ9xhUhO1s4za0wKKae0ILv3DykaGFB/+BoYV+9xJIjcZH66fBUsp7YhBWW+6LjFpGgDFTIBIm
+/ztv/TFSPXILEyFASG9D+9Y+1uHObQcj4siR/Rd6EIjvuZLIreLy3p9i5h3y/X3pMj17BWu9o46B
+t2kN18YPEWaoZNjtsm/Q4wbs07T9gUM+ky5Xdc/gOiVfgX7K9Tnml3OcYh6ZZCdzTZvJNO1t8kmz
+ci8237cvTqVMX+q0L6nfMLUnbzC29Vq0I5hzQqNjU06m+NYmNti/6L5ymIrM8OKCuZ4NzDqXzluC
+6AVBDKr2321cgU5IMHXOft7EvieQ+nF6TdkXYGL6fC5jQxDv5kDYX58rEwuZ7aFCELBe0O/AYUSM
+mtAJaXuI80SJy0O6o3SIMnllf+Gead/0pxSPamr7MgllTjkxTQ2dl03mHr/YMb0B5LNRNq9YOkWx
+oCCOgM6t9Clgb3R1WG/MdiKC4E6fMWCdDdFRvwjGQR7Ni4O9odUzcbjvBot7g0OI5/s7LjqXRPSI
+FzxC3TNCNeaegGOosNRj39UU8S1B5nSwoLdHeDYajyH0u/ng683l82ObS0R+x2b33QRI+9Cxf5dt
+Mfid7ytyRhOvVBM68sf6knEX/FXosOZS7I9LeqWte2IXc07EkEKvffg43Izw3gEadhG1fHcMCxKj
+J2pMi3KKgTXu9sm4t9hWZfVhcF3z/TB62g9AIZRhE44ffkUGqOdnOoybNfSSN+uX4W1ARx7obNvn
+BR5hnKMWu+5wuo30oOFU5W1rw7lDl/f0foNYs6PPvbz8xH5b0F15ywN7TDvf6xoe//wB4/tVEHb4
+i7v8Ttvry8G7BOzrYd0Mnqp2KGQex2BdQGGOSE1jyaWRcLyv3ZLR4aZ2acgV6BdRKQ6+wJH8b/L1
+ptryW2MQ/B+3QrZo
 """.decode("base64").decode("zlib")
 
 ##file ez_setup.py