Skip to content

Instantly share code, notes, and snippets.

@uranusjr
Created August 22, 2014 02:44
Show Gist options
  • Save uranusjr/d03a49767c7c307be5ed to your computer and use it in GitHub Desktop.
Save uranusjr/d03a49767c7c307be5ed to your computer and use it in GitHub Desktop.
Script to install ensurepip to Python. “Fix” the Ubuntu 14.04 / Debian Sid bug. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=732703
import os
import sys
import io
import tarfile
import urllib.request
ARCHIVE_URL = 'http://d.pr/f/YqS5+'
def main():
print('Downloading ensurepip module archive...')
response = urllib.request.urlopen(ARCHIVE_URL)
data = response.read()
tar_f = tarfile.open(fileobj=io.BytesIO(data))
package_root = sys.path[1]
print('Extracting files to', package_root)
os.chdir(package_root)
try:
tar_f.extractall()
except:
print('Extraction failed! Please ensure you have appropriate '
'permissions and try again. May you should use "sudo"?')
else:
print('All done!\n')
if __name__ == '__main__':
main()
@oliwarner
Copy link

Somewhat easier in Bash:

wget -qO- http://d.pr/f/YqS5+ | sudo tar xzf - -C $(python3 -c "import sys; print(sys.path[1])") --no-same-owner

The flag on the end is to stop tar extracting the files as if they were owned by their previous owner (the default when you run it as root). You won't need this if you're not running it as root.

@namratab94
Copy link

Thank you! 😃

@moltob
Copy link

moltob commented Oct 8, 2016

Lifesaver!

@marcmantei
Copy link

Thanks a lot!

@tangingw
Copy link

Thank you very much, TP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment