Repository: pypa/virtualenv

Issue:
Some builtin modules should be preimported in site.py on PyPy
For PyPy, some built-in modules should be pre-imported in `site.py` to match CPython, or some programs may not be working properly, for example, the Python Console in PyCharm.

What PyPy does currently(L532-539, L545): 

https://bitbucket.org/pypy/pypy/src/314ddd2d83c5e467aed4f64ab4b8b2fc0047540b/lib-python/2.7/site.py?at=default&fileviewer=file-view-default#site.py-532:539,545


The original commits:

https://bitbucket.org/pypy/pypy/commits/1c6dc3e6e70c6fadad60ba9c3990b49c8aaf16bd
https://bitbucket.org/pypy/pypy/commits/f160281ab6613617a49a73129f81d7ef3540755a



Discussion:
A quick patch:

https://gist.github.com/microdog/47fc0545c0c3c7abce94c533f91efdda#file-virtualenv_embedded-site-py-patch

and patch to the distributed virtualenv.py(version 16.0.0):

https://gist.github.com/microdog/47fc0545c0c3c7abce94c533f91efdda#file-pypy-preimport-patch
@microdog can you create a PR against master?

Resolving patch:
diff --git a/virtualenv.py b/virtualenv.py
--- a/virtualenv.py
+++ b/virtualenv.py
@@ -1970,159 +1970,161 @@ def convert(s):
 # file site.py
 SITE_PY = convert(
     """
-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
-k0qE
+eJy1Pf1z2zaWv+uvQOnJiEplOnHaXNepc+MkTus7N/HG6WxuXZ+OkiCJNUWqBGlZ2+n+7fc+ABAg
+Kdm+7Wk6qUQCDw8P7xsPcBAEJ6uVzKZimU+rVAol42KyEKu4XCgxywtRLpJiur+Ki3IDTyc38Vwq
+UeZCbVSEraJe7+m/+Ok9FZ8XiTIowLe4KvNlXCaTOE03Ilmu8qKUUzGtiiSbiyRLyiROk39AizyL
+xNN/HYPeWSZg5mkiC3ErCwVwlchn4mJTLvJMhNUK5/w8+jZ+MRgKNSmSVQkNCo0zUGQRl71Myimg
+CS0rBaRMSrmvVnKSzJKJbbjOq3QqVmk8keJ//oenRk37/Z7Kl3K9kIUUGSADMCXAWiEe8DUpxCSf
+ykiIN3IS4wD8vCZWj6ENcc0UkjHLRZpnc5hTJidSqbjYiHBclQSIUBbTHHBKAIMySdPeOi9u1ACW
+lNZjDY9EzOzhT4bZA+aJ47c5B3D8mPV+zpK7IcMG7kFw5YLZppCz5E7ECBZ+yjs5GelnYTIT02Q2
+Axpk5QCb9BgBJdJkfLCi5fher9DrA8LKcmUMY0hEmRvzS+oR9c5KEacK2LZaIY0UYf5OjpM4A2pk
+tzAcQASS9rrGmSaqtOPQ7EQOAApcxxKkZKlEuIyTDJj1p3hCaP8tyab5Wg2IArBaSvxaqdKdf9hB
+AGjtEGDYw8Uyq1llaXIj080AEPgM2BdSVWmJAjFNCjkp8yKRigAAahsh7wDpoYgLqUnInGnkdkj0
+J5okGS4sChgKPL5EksySeVWQhIlZApwLXPH+4yfx7vTN2ckHzWMGGMvsfAk4AxRaaAcnGEAcVKo4
+SHMQ6Kh3jv8T8XSKQjbH8QGvusHBvSvdC2Huq6jZx1lwILteXD0MzLEEZUJj9ajf79BlqBZAnz/u
+We9e72QbVWji/G29yEEms3gpxSJm/kLO6H2v4byOVuXiFXCDQjglkErh4iCCCcIDkrg0C/NMihWw
+WJpkctADCo2prb+KwAof8myf1rrBCQCh6GXw0nk2oBEzCRNtw3qF+sI03tDMdJOeXedlXpDiAP7P
+JqSL0ji7IRwVMRR/G8t5kmWIEPJCr7/Xp4HVTQKcOI3EObUivWAaiT5rL26JIlEBLyHTAU/Ku3i5
+SuWQxRd16241QoPJUpi1TpnjoGVJ6pVWrZ5qJ+8dRl8aXEdolotCAvBq7AndLM+HYgw6m7BZxUsW
+r3KdE+f0OuSJOiFPUEvoi9+BoidKVUtpXyKvgGYhhurN8jTN10Cyo15PiD1sZIyyz5zwFt7BvwAX
+/01lOVn0es5IFrAGhchvA4VAwCTITHO1RsLjNs3KTSWTZKwp8mIqCxrqYcQ+YMQf2Bjn2vuQl9qo
+8XRxlfNlUqJKGmuTmbDFy/ol68dXPG+YBlhuRTQzTWs6LXF66WoRj6VxScZyhpKgF+mVXXYYs9cx
+JtniUizZysA7IItM2IJ0KxZUOrNSkhMAMFj44ixZVSk1UshgIoaBliuCv4zRpOfaWQL2ZrPcQ4XE
+5nsC9gdw+weI0XqRAH0mAAE0DGopWL5xUhboINT6qOcbfdOfxwdOPZtp28RDzuIk1VY+znpn9PC0
+KEh8J3KFvYaaGApmmJXo2s0zoCOKeRAEPe3AiFyZb8BIvV5ZbI6AF4QZaDQaVwlavtEIbb3+oXo8
+jHBG9rrZdhYeqAjT6QOQyekyK/IlvraTuwRtAmNhj96euCA1I9lD9ljxFdLP1ekr0xSNt8PPAhVR
+7+LT6fuzL6eX4lhc1Tpt2FRo1zDmaRYDX5NJAK5qDFsrM2iJmi9B5Sfeg30nrgCDRr1JfmVcVsC8
+gPrnoqLXMI2J97J3+uHkzfnp6OfL00+jy7PPp4AgGBrZ26Mpo32swGNUEUgHsOVURdrA9lo96MGb
+k0v7oDdK1OjlN8Bv8CScyxK4uAhhxkMRLOM7BRwaDKnpAHFsNQATHgwG4rU4FE+fiheHBG+1WW0A
+HFhepzE+HGmjPkqyWR4MqPGv7NUfs57SLtzV0TfX4vhYBL/Gt3HQAzeqbspM8RNJ1OfNSkLXEv4X
+5mrQ6/WmcgbidyNRSMOn5BsPuAesCjTNta3+NU8y854Z0x2DdEhIPQCJ0WiSxkph49EoEETzImJP
+GkUshBarjdtmoMfETyFhETPsMsR/OnCJx9QPx2Nc3C6mEcjmchIrya14otBxNEINNRqFekQQXRIP
+cK9Y6fSFaYIaqkjAiyU2Q401VnmKP3EAlHmSNgykUCfieuhAKbqN00qq0JkVkCts0Au1aqKI98Af
+CcHs1os0IPYxHAGvgGRpDmqyQGrVYPGzB/4MqCMTpGEgx7EVkwlx+w+OJGhYcCn7qM6VakBh7Scu
+Ti/Ei2eH++iuQEw5tfTwmqMFTrJK2oczWCDD7owv9zLi4FJihnoUnx7thrmM7Fq0V39mVrWQy/xW
+TgFd5E5nYcUnegOhN0xkEsPCgeImg88q0jiGMQaaPH0QBXQOgHxLgmKW3Kz2Hkf7MlOgaDhyJlrr
+sJ5t3arIbxP0JsYb/RKMIShDNInGc+k5K+fxFdo8kH9wczMk1Vr2Qd0VFXukhDeCRHswrRVnRODO
+URNf09ebLF9nIw51j1GphgPLrShMml+xQb0Ge+I9WBlAMofIrSYaQwGfXqA87QPyMH2YLlCWggcA
+BJZcUTzmwDKxHE2Rw0IcFmEMXgkS2EKiQ3BrhqBYyhDDgURvI/vAaAaEBJOz2suqA81lKF+mGQzs
+kMRnu/OIY0wfQIOKEZjFUEPjRoZ+V0egesW5q4icfj00uV++fGG+UQvKoCBmY5w1+gszsobRagOW
+MwFFYHwuzscQH6zBfQUwldK8KfYvRb5ifwsW9EJLNxh6iN/KcnV0cLBeryOdP8iL+YGaHXz73cuX
+3z1jPTidEgPBfBxx0cm06IDeoc8afW8MzGuzdA2GTDKfHQlWKMnvImcT8fuhSqa5ONofWJ2JbFzb
+YfzX+CqgQkZm0B7TGagb1Cj9/sf+70fRiz+CCJvEZej2CAfsfmi7aS2Vb1qhR5mDwQf3ZJJXaJFr
+hlDiaxgOIvGpHFfzwGLg2UHzAyaM4hpaVth/fo0Y+Axi2Mva2xFqC2IPtOvOCnxi9onJC9KaAqmM
+1qkVJm+6tZmh8fThcm99Skd4zBQThUyCkuE3ebAg2sZtCcKPdmHR5jkurPl4FsFYeWPMp1PtQYYo
+QIQMrsbQFT+Hu9G1Balas44GTePqSNDU4A2OmdwaHFnLPoLsCwoEKKznpdUtgFCNHKHJBJhlgBbu
+OC271+QFxw1CJjgWz+mJBF/4qPXuGa9tlaaUumlwqUcVBuytNFrsHDgzNABANIqAG5pw5GNjUXgN
+OmDlnOxBBpu1mAnfeP7fXtOHaS32rt5M4i4QuEYhJ50eBJ1QPuYRCgXStAr9nttY3NK2PdhOy0M8
+ZVaJRFptEa6m9ugUqp0GapZkqIKdRYomaQ4esVWLxEf1e99poHgHH3caNS2Bmg41PZxWx+T3eQLY
+1+0wUTavMKXgZlwQpWWiyMohnRbwD/gXlMmgtBMQk6BZMA+VMn9mf4LM2fnqL1v4w1IaOcJtus0f
+adkMDQfdICSgzriAAGRAvLYckvfIiiAF5nKWxpNreC23CjbBiBSImGM8SMEA1vTSC2vwSYS7HCSc
+CPmuVHIlvoYYFsxRg7UfprX/XAY1iYbQaUF+gs5QHLvZCydzcdzIZPi87OcwaENklQPzjsHrcbP5
+LocbfrWJFXDYfZ1tkQJlTLmWYOCiem0o42aMvzp2WtTUMoMYXvIG8vZtzEiDnl1vDRpW3IDxFr05
+ln7s5iSwbxjk6lAu7wI0LYma5CqgwLaZnXA/mi3atLHYnidjBOgtQDC49iDJVCcoMI/yfxnkfuje
+ZDHvMY2LdZIFpLs0/Y79pWnhYUnpGbiDSwqpDmCimNY8eF+AhND+5gHIE+kCiM1lX2nXvw23OcfO
+BvjxJh/YERlu4HnTV0cvrtuEGT4MtKXr6V1ZxArXL+VlZDHZBui6PTfSy0iEONvorUy91Y0hRZEr
+CDnFx8svAinGWd51vLmXRN3o+kiCUruXIA2MiVUANqpEZJKDYDc3duL5Z+HWTeOd0B1V9rj+u9AC
+2PvTTYYZrS6g160n0OHlN6OOlKSL7stvHkmOLnFsOGd24IHnuhUyTsnQO+8pn5fds4K242rAepZC
+Mr3+bUK0eUWjafPQ3S3wY6BieluCMX82rMnYnjp+fI9nKzxtT3YAa0WU5rNHiwIBeD7+FaJYpRNg
+t3GSUo4fiLG/j0rQROCcWugWXg/STvl2SNAVIqmrZ8gdHPIP2tPRXtOJyQd3RKrms4pVG5U9vaFf
+70d5m/TuXuR25dBpxn0LfvAAjeCN3DVZbdlMr2e8sXDYobYegd2fgNd25vwTcHj2IBQeNRBD04pz
+0LAJXVNxrYAB9gDVvMVF2eGgtIfmnbGZcTNY6JR4itL5VKxpd5wSfbhXAVCm7IB0wEE+1Husb6ui
+4J1SEvKVLPZx828osDDIeBpUb9QGc/BBloiJbTahxKlTRpJ3MW6gU6F2JkHtwXbzziI3iROZ3SYF
+9AWVEgY/fvzptMM+6GGw08P1pLeG2JVdWJwWruLDXS0fH7N9a9J6etQ2Xq1snokIu6dwT1Tv7bjx
+nijFWpOFnNyMJG304jJjXye1+RZfIyp2/9cv11HxjGqOYCqTtEIasBuFxWKzKptQsruUYJJ1ZSdW
+etD2LSdxZmk8FyF1nmL+QK8mpRhu40I7Gasix1pCUSXTg3kyFfK3Kk4xQJOzGeCCWxH6VcTDUxpB
+vOMdaK4xU3JSFUm5ARrEKtc7ObRZ7TQcb3iioYck5+yZgrh9fSQucdr4ngk3NeQyYZ6fuMZJYgSF
+HZyt5Yiew/ssH+GoIyQvMBQh1d5Zpce95gi5zozD/PUIzTeSXrnbRbTmLlFRy3ikdGPGnMw1QgkH
+GLPyb/rpc6LLXFuwnG/Hcr4by3kTy3knlnMfy/luLF2ZwIWt8w9GFLpyEM3kdGd5hJs+4HFO48mC
+22GtHtbkAUSxMiGQESouWfWSFLxbQ0BI7zn7h/SwLndIuAiwyDmTqUEi++NehA63TLGx05mKJ3Rn
+norxeLaVfPh9D6KISnvG1J0FbhqXceQJxjzNxyC3Ft1hDWAomtUfnPfKbkdjztE1Vf3Ff33+8eMH
+bI6g7HY1dcNFRLWNUwmfxsVctcWpDhhWwI/U0i+aoG4a4F5nlqTPWZL+UPQ5S9LXw+zxP+9oyx45
+R6xpxzkXK7ChVIVjm7m1Kv1+47kuatHPmc15zwDcgqx0XIItVDq5uHh38vmE0zfBPwNXZAxxfflw
+8TEtbIO2B+Q2tyTHPrWJrO2fOyeP2A5LmF4tT6/x4HBbYOjj+P86TyAoIBHpNNzjpvn4LIDV/a1C
+KTfEZV/BvnMY3/EQHLnryt82B/A3jNBDHgH62oMJzVTqWKahcq1x20EPB+jjIo6m9+zTwQ7d4TU5
+9LDNtvtM7TS1kuWb0x/OPpyfvbk4+fyj4zWh9/Px8uBQnP70RdD+OKp8diNi3BMusRQDVLF7lENM
+c/ivwnB6WpWc+IJe787PdZp6icX8WN2JWjqC51zHYaFxZoIza/ahLsBAjFLtkzunJqhcgU5VoIu+
+5Ip9lesKUDqMMUb/rtLevj4NY07N0IZeBAwPjV1SMAiusYFXVKdbmkCk4P0PfZKkAylt1eyOeEqZ
+l9Y2qZP8N6llLz9FneFJ3VlrxqvAxTW4jtQqTUBXvgqsAOhuWBhQ841+aHf2GK8upeN0h5F1Q571
+ViywXOJVwHPT/Qc1o/1WAYY1g72DeWeStsWpxBSre0QfG/V5+1vewVe79HoNFCwY7nKUuIiG6RKY
+fQzxnFgk4HMDTy7AXKFrDRAaK+FnRI8c6yNz3JUO3i6n+38NNEH81r/80tG8LNL9v4sVBA6CayiC
+DmK6jd9BrBDJSJx+fD8IGDmqRxR/rbAAGkw4ZZUcYafCDd45HIVKpjO9r+6rA3yhDSu97jX6F3JV
+6P7d7mSAIvD7HyHZ2d//MAS01S52gCHOZ9CEjxXeFj88KeVuwprPnrhcyDTVZb1n785PwefConOU
+I956OIUxOVDHbURdgsQnuRqgcJMRXhfIzAW6frTHPI28Zp35QBQ86u1tS9vVopxbu1crwVbEiXLR
+DnHamjCmbDpCjoYlMasb4G8tpbYN0tltQ3RH0WHOGF0UVMjnswawND2NOZiAKANr2k12k3fSkqw0
+hVtpMgF1CpoX9OoQZAWpiwe3iAHzjPOLeaHMeQ94uNoUyXxRYnoZOkdUa47Nfzr5cn72gcqvD1/U
+7moHjw7JhR7yHvox1khhogC+uHVPyFejkcu6jVcIA5UQ/K/5ijfnj3mAVj9OaXn5bf2KD9wcOzEU
+zwD0VLVqCgk6zk63LumphYFxtREkftwSqBozHwxlwbC+X+92u/Nrs6Jt2bAo5HqYl49Ijs9WtiJH
+d3YqcpofPcXZCrcUpmF3I3jbJVvmM4auN60322p/3E9LCvHoH2DUbu2PYYpjWk31dBxe28YsFA5q
+S/uLGxQ47SYZSjLQMHQ7D1we69bEujkzoFdN2gImvtfoGkHs1ueAovYzPEwssVsBgulItfpPVMgF
+BFIfcajAk3qiSH8E4okIQ0dwhwPxVBx6s3Tswf2z1MoLbOSPoAl1MSLVt+cFsCJ8+Y0dSH5FiKEi
+PRJ1OIjTy3JbJ4Of9QK9y+f+LDuFgPJ/KHdFnM1lyLCGBubXPrm3pC9J3XrEvkquu0yLOAMn9W4L
+j7cloztnb1BrsEKr3Y3cNPWRTx5s0FkUv5NgPvgiXoPyX1VlyCu5ZZOv89DQdqj3Q8TqK2iq9z/D
+AD3o37rK83zAndTQsNDT+23LlhOvjfVorYVsHOno2xfalZ0UEKKVqo9IOsewjFNq/YDa5B7XRj+w
+T3Wm3v7uOA7jZFMsUB7cB8nPkFx8QIPPwiVU91sfH9DvpvJWpmAdwJqGWN39q63uHkQ2Y9FZ9PJQ
+JC42F5tuFOhNjcCRqTLHcai+vDNlsmtcb2VrJPzHQfCLjjzi7Iaiy7d/OxuKtx8+wb9v5EcwlXiI
+ayj+DmiJt3kBYSQfQ6Tz4ViwXnJ8mFcKT3oRNEri81F6dMsuPPLihoGupPdL6K0iFFg0iL443t8A
+KNY4Mw3okG7tEZgacfhtDrM0/E7jE3ZRJ9AvnVECU+Wv2mX+KzU70D0OnC5XwfnZ29MPl6dReYf8
+a34G104bf5tKksbHRwVuFQ2FfTKp8Inu6bjHP8p01eEd6wjTnBLACFP0IfxY2aiSbwiIbQwRF5gm
+EKvNNJ9E2BL4nY8mlWtwlwdOMHmvPfeMKcIKB3qXqfbZ8THQRAR44gqb6ClQQxo/HuOJGH4cBVvs
+61BQphf+9/RmPXUTxfpoA02o10Stnmbo96813IIpqyFaviHUji3h7SG3NInVcjxxT0J9zIS+0wGU
+F2X+5Syu0lLIDKIlCuLpcD1ocPfwEosGrzSbKTrRQ2mYdB1vlFO5ESsR4Ki04ypxi4LSeBBj/xTf
+sJ7HU1Wi4sOcAJ0QpcAod7qqarJg0eVYRyvX1l72OsleuEUJmsg8KMe+E1VTGyaKHiGjNJelJgA/
+CAdXz+vdc8r0TryCvMlK193Bt6dPnwbi3+93ZhiDKM3zG/CyAGKnE3JOr7cYYj0nu0gdtXDmVQSs
+OFnIK3hwTYlo+7zKKOO4oysthLT/NzB4TWo2NB0adpazcQVvunIL3rvRtuPnLKErWzBnJFG96ptv
+MJ9kJIl4EZRAP1aTJOlz5gHWYZNXeNoI84eaUeQd8HqCYIb4FjeLOHheoMtI1X6WbSw6MBcCHHAp
+Dg9HZzTppA0gOrrYaDxHZ1lS1iXyz9ydRH2MubRXsWiGEvEaZcJMpEEN5+iax6T1asLvXczphSH5
+5Op5oyzMmSe/vg95YGoQsnw2M6jCQ7NMk1wWE2NCcc2SSVI6YEw7hMOd6QoaSqxHvQ6UAlDmZAOm
+Vpjt26/syriYfqRd1X0zki5GKe21PpzxibNGQVYU1eNTbskS0nKu+UL19B8oZa3NvzeY+EpzPVZJ
+e9cPuIe1qkxfK8DlDPVdAwCHrrKxytFypKconPuTLHzm2y13AeCHAm9G7jYpyipOR/r0+gjdtpHd
+Z9aI2kM+Ow+wWc9kiFYwme/romR0Fwb1aTYsXjRF58dipjMPkXtwxj9jssrR6Ttkvwg8CSTNdGSO
+fZrU0JVlWHuQTledOWyBoL42RzO2eNvmZECrpt7FXGf5dbnUFpfZL4Kj8/fitQhfDCG+bhxRW23w
+RhpA9skUI/JmN5iKE+ybOTYP94vXxyJ8PhTf7oAebRng6NAdoRmlNiBsBfLi+tFkTJMxkQ2PKNzf
+1NTCDTVKg+smtdtU+Z6I8pcGUfi8ky7pfP64sYMlKIBZIqf7TxQSQuNS69jtbErD4mlfXS5Hho8P
+uoo+l9b1+YzsGCKJda3QHNVmvF07ijlBq9UQHzJEncE20J6QNlUgjVI2e+kVlrlp/BrEAgCjrn0v
+/IY7pPBe08L1sbZuh+q6aAu2I8zX59F4d6tuWMvbvc7cowT5XgbAnc9a3l0BeQSn79xjd3j5z+cf
+rrPetnXZQvSeKnjPm+gsdu9Y1d0F55482irzes3NpzuF5nFLV9d/SWocKLX8gPNprs8jt/EIS1z5
+3ozclrou8YI62ktG85ZK1wniYJhvIkKvhGJ+KpiC1QC/qJrh1u8t3bd3oqiwC6/V+Obw+dCcYWRA
+egIvohdf62vpqJs5p+37zEMdhMFL3e8w+jcHWFL6ve2rVnxC0zpuXE/jD8ZprkE0snSojcz95fD1
+msUC73Gricmusr2y4D14LmPwWcyFjDl4XxBZRl3oumqjFuFt+u3xUuxrQxx0l7Bs04C7tN+jWVn3
+6jYDGMsj5y5ifoNuWbU6skkuYxhwkzF0Kw6JJ246j9OwUUCTWd4Eu6bP/XfNXbfo2Zmb8oHW3P3T
+bC4NdN/tprCLBpxn0IR4UB18rbStRfDm5dHI1etDXcLSLs12W+E8t9iFVj9TEoOJdOJGjaxhzmU8
+cb9jmdQ+3+naUcrknEVzGaIx3Zaub3L6Q8w8l5ngc3uGmWqHpprzdNBCt3WNuIBzJOdzNYrxqrgR
+xbpUOdUKYUzw9J4u+pKx2piQB+9HARCGjXRZqFv6DRwBSo6vrOXKI+cGDEFDU0WrUyKrkinrch1f
+AbiI05TU3yTHucY1SCXmmFVVrAoISgN9sSmXxHTV3dZATQptGasbg7rpMdT3XJJGpDosc4KRk6ON
+ehogAlvflk4fjew74Jpn9XnuZGi5QWbVUhZxWd9j4u+6JxD51CPQ4VZcXSc/Votjg01cxBLLHA5S
+mKqy37+G6M4PbXcc4B5YPfdwfqIeOu/6mLPhjhmxfJzc2QvM3Dt0pnRTruva2WY139mLW2AhzNVc
+pB512orf6suC+MpKTqCjc+hwEMi+e3bML5K2mox9U4uG88zVCe1rYfBsMtnVzivdmjzQvtOtEYfa
+8X2VYVml5RxuaWypqD3qTp1TjzZwUjlYnXlPKscvWn9kKseD/5hUDp/+KFK82SHFe8Ic5HTeziQX
+MedCh0n8ezdx87BVhwScPN5opp9jHRfl62IthE77RZ7fjEbMP2cz48nyONog6ap8c5/5kBphP87J
+KZ0J/hyPcQOXdZUSekKIIW7rovIwqIh/HuitqxHoVjpfAB3MV75HFKGQx6RHz0EpFsl0inejsc73
+smfIl94aaOTZjaBtH7zgjgr+Lz+ffPr884UzkLehZLAcGTqE7Q0dUJl3SVmb2PY9StzOgOh8V695
+07/uZBpeTCp2cjz/TzCCKTHzb5jHE0jIJwOu8V3GG3P7mMzyar7g4hKYiwPNXzTjYWErvNd5Bl5L
+aerTMpocl6ZYQjKOPOfRlHLbxiqZx2Sa4BXdDxj4jqbXVd8+i7UCNCa6prhXTHtFbssmifgN7l8q
+OYKeo3ECeiHAf8V/nwHdR4bwwS4ltBUQ+KdHwgGxnQssCPzC1XlIKyevrxf842VnJHWSmTe8t8xH
+IcnhXeIVCHRTr+LIl++0V6Xg69ZFs8Rijw/ncBF1gT53louISjyKCbNICONESGLzQEsaZSZ0qWIN
+Dq+M/3gpvoDx1iszMB1wq4ZuZjdnQvHa3YxHn9DBjnUTuXXMPhtfrauh6Pt3/ZCQlWcH1+D+yWjC
+R0+NYhmBtZyjnUZb9qxJ3zOsSbOKZ4038ONNm6DijM4FjBqqKmrAwLL4eYUHY+nqPvMHCzCdcJsn
+U67HRwk1w+BNsaBAGmBo39S9LpJqUtdGzkgfI4J4d1083VgbIKcNQOWiIOluajtU2EOsJmsSQRd0
+jKu5cgsKEqUq+e1333y7t1Tz53/57uWLl15HM50tF+Q5Z6KCf2KmLmjQsVHc2LmR6suPWVISIf2j
+c2e1U5rarIMfVPjrAn1FDbB51m8rbh5+HogdCDpIhu+h1Ye8fI9ePeE7FBeyoFuw8owebKmj2msc
+4eO/hoG6kqI2snb8G9FCF2IbGF1K0rn0sOR/ed7ZsU1FNoeRsZyhRw4nNuzwPLB4rWlwwTXytmas
+aWbLaQu4KNvmLhjYcapXMl7cEZc82OoTc1ZG+9d4EWch9+0fatFXn1tw1Bn8qXkRL5VWapxi4NMu
+/tW/6IiRV1ytIpvsYch1KI73NSKKfWXu/oxc7Jt+Rsf+P551t5pRF04AEoYmjMyocVmXC9L29WH+
+I1np2/UeDdJ2tbdKgyLQy6LD286jmfdsY5okTsceXScfsOfpXvRcR0MjbLZRxG3+ncFmFPdY5CpX
+yV1g/0YDZwycA3IYjbWv/6SufJGzcjJM3pWr7pyae5h+YEmPfzj/+ObknCg2ujh5+58nP1DVP8p2
+I1Pz4E3eLN/nNdn3zga6G766VLtr8BrbjqvW+Xi5htB636px7YDQfZVA1zI2g3j39bYOrRPZ7U6A
++O5pN6BuS1d0Qm5lI/UVaW55duM8YE8/5cNb5pdT+GoemUoxd6zGZjQO+cI5FNWOPFmC6ioyA7yu
+/9Ghbas2YtuqO8O1o3B6t2fu6t5SuDGwJwFp+TAeROa0VT/mHLStLOHUXvOvbZGfhrdImDvuQIIn
+0rlumW5aZlCl/2e9iirD+DTWf0BraP9EBrXjCidl//YLlipOdDjUusahPT83WTKV6RYqgGJlpWru
+EWZUjJLV9YC2avaJElf7dOXKPqqqa/sLV01nhv+WYG1saa/jVFw/z0YPGs+q1K13tX1aHShhShVV
++cw54wz68gAoXUu3AunAXCNbw/FG9J+ovk5n4uktoqS+S9dBHt0ZB3tDrWdif9uFIu6FGkI8395w
+2rizQ/c45B7qnh6qMrc2ODYRTxFtuylEvCbIXJQn6BZOL22HNaB6rwu+3l49P7LVMcjx+NrRQ3TY
+IXBSYleOR73z0menO379/avij6E9ZYj7NoPmKNdB47jh9u2B1vHpLVsIpjyXIQXe++7dYtPD+0s4
+Qa+Jq+XAI5qZCH//Y2Bn55wW11OwTwbtaddabBsoPv/ugqID821QLb0onhS41dh87pxp2vC5xPCZ
+PdFIF+m7RVOBIyfktvk8wj1MHrWeabM7XRrzoO6MounPDZo8qZcfxJ2dEW418BI9281Ec+o1T2zx
+Kfj+ne7+zx/Qv33uxnY/3JUesq1edN4ZwZ4xHtbC4vYml5rnEVgeUKUhKfAnIrSyj7eS1YR0Gaqe
+HDIGBUrkmmMoRel68qJH2qmwhqL3v4mj5FQ=
 """
 )
 
diff --git a/virtualenv_embedded/site.py b/virtualenv_embedded/site.py
--- a/virtualenv_embedded/site.py
+++ b/virtualenv_embedded/site.py
@@ -733,9 +733,27 @@ def write_history():
     sys.__interactivehook__ = register_readline
 
 
+if _is_pypy:
+
+    def import_builtin_stuff():
+        """PyPy specific: some built-in modules should be pre-imported because
+        some programs expect them to be in sys.modules on startup. This is ported
+        from PyPy's site.py.
+        """
+        import encodings
+
+        if "exceptions" in sys.builtin_module_names:
+            import exceptions
+
+        if "zipimport" in sys.builtin_module_names:
+            import zipimport
+
+
 def main():
     global ENABLE_USER_SITE
     virtual_install_main_packages()
+    if _is_pypy:
+        import_builtin_stuff()
     abs__file__()
     paths_in_sys = removeduppaths()
     if os.name == "posix" and sys.path and os.path.basename(sys.path[-1]) == "Modules":


Test patch:
diff --git a/tests/test_virtualenv.py b/tests/test_virtualenv.py
--- a/tests/test_virtualenv.py
+++ b/tests/test_virtualenv.py
@@ -1,10 +1,13 @@
 from __future__ import absolute_import, unicode_literals
 
+import inspect
 import optparse
 import os
 import shutil
+import subprocess
 import sys
 import tempfile
+import textwrap
 import zipfile
 
 import pypiserver
@@ -471,3 +474,47 @@ def test_create_environment_with_local_https_pypi(tmpdir):
             os.environ.pop(key)
             if key in env_backup:
                 os.environ[key] = env_backup[key]
+
+
+def check_pypy_pre_import():
+    import sys
+
+    # These modules(module_name, optional) are taken from PyPy's site.py:
+    # https://bitbucket.org/pypy/pypy/src/d0187cf2f1b70ec4b60f10673ff081bdd91e9a17/lib-python/2.7/site.py#lines-532:539
+    modules = [
+        ("encodings", False),
+        ("exceptions", True),  # "exceptions" module does not exist in Python3
+        ("zipimport", True),
+    ]
+
+    for module, optional in modules:
+        if not optional or module in sys.builtin_module_names:
+            assert module in sys.modules, "missing {!r} in sys.modules".format(module)
+
+
+@pytest.mark.skipif("platform.python_implementation() != 'PyPy'")
+def test_pypy_pre_import(tmp_path):
+    """For PyPy, some built-in modules should be pre-imported because
+    some programs expect them to be in sys.modules on startup.
+    """
+    check_code = inspect.getsource(check_pypy_pre_import)
+    check_code = textwrap.dedent(check_code[check_code.index("\n") + 1 :])
+    if six.PY2:
+        check_code = check_code.decode()
+
+    check_prog = tmp_path / "check-pre-import.py"
+    check_prog.write_text(check_code)
+
+    ve_path = str(tmp_path / "venv")
+    virtualenv.create_environment(ve_path)
+
+    bin_dir = virtualenv.path_locations(ve_path)[-1]
+
+    try:
+        cmd = [
+            os.path.join(bin_dir, "{}{}".format(virtualenv.EXPECTED_EXE, ".exe" if virtualenv.IS_WIN else "")),
+            str(check_prog),
+        ]
+        subprocess.check_output(cmd, universal_newlines=True, stderr=subprocess.STDOUT)
+    except subprocess.CalledProcessError as exception:
+        assert not exception.returncode, exception.output