Files
obitools/distutils.ext/obidistutils/serenity/checkpip.py
T
2015-01-13 20:40:27 +00:00

111 lines
3.6 KiB
Python

'''
Created on 2 oct. 2014
@author: coissac
'''
#import urllib2
import os
#import imp
#import base64
#import zipimport
import importlib
from distutils.version import StrictVersion
#from distutils.errors import DistutilsError
from distutils import log
from obidistutils.serenity.globals import PIP_MINVERSION, \
local_pip # @UnusedImport
from obidistutils.serenity.util import get_serenity_dir
import sys
import pkgutil
def is_pip_installed(minversion=PIP_MINVERSION):
try:
log.info("Try to load pip module...")
pipmodule = importlib.import_module('pip')
if hasattr(pipmodule,'__version__'):
ok = StrictVersion(pipmodule.__version__) >= StrictVersion(minversion)
log.info("Pip installed version %s" % pipmodule.__version__)
else:
ok = False
log.info("A too old version of pip is installed on your system")
# We clean up the imported pip module for test purpose
for m in [x for x in sys.modules if x.startswith('pip.')]:
del sys.modules[m]
del sys.modules['pip']
except:
ok = False
log.info("No pip installed on your system")
return ok
def get_a_pip_module(minversion=PIP_MINVERSION):
global local_pip
tmpdir = get_serenity_dir()
if not local_pip:
# if not is_pip_installed(minversion):
# try:
# if 'http_proxy' in os.environ and 'https_proxy' not in os.environ:
# os.environ['https_proxy']=os.environ['http_proxy']
# pipinstallscript = urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py')
# except:
# raise DistutilsError,"Pip (>=%s) is not install on your system and I cannot install it" % PIP_MINVERSION
#
# script = pipinstallscript.read()
# getpip_py = os.path.join(tmpdir, "get-pip.py")
# with open(getpip_py, "wb") as fp:
# log.info("Downloading temporary pip...")
# fp.write(script)
# log.info(" done.")
#
# getpip = imp.load_source("getpip",getpip_py)
# ZIPFILE=getpip.ZIPFILE
#
# pip_zip = os.path.join(tmpdir, "pip.zip")
# with open(pip_zip, "wb") as fp:
# log.info("Installing temporary pip...")
# fp.write(base64.decodestring(ZIPFILE))
# log.info(" done.")
#
# # Add the zipfile to sys.path so that we can import it
# sys.path.insert(0,pip_zip)
# zi = zipimport.zipimporter(pip_zip)
# pip = zi.load_module("pip")
# pip = importlib.import_module('obidistutils.serenity.pip')
# else:
serenity = importlib.import_module('obidistutils.serenity')
sys.path.insert(0, os.path.dirname(serenity.__file__))
pip = importlib.import_module('pip')
local_pip.append(pip)
# Prepare the CERT certificat for https download
cert_path = os.path.join(tmpdir, "cacert.pem")
certificate = pkgutil.get_data("pip._vendor.requests", "cacert.pem")
with open(cert_path, "wb") as cert:
cert.write(certificate)
os.environ.setdefault("PIP_CERT", cert_path)
assert hasattr(pip,'__version__') and StrictVersion(pip.__version__) >= StrictVersion(minversion), \
"Unable to find suitable version of pip"
return local_pip[0]