/
usr
/
lib
/
python2.7
/
site-packages
/
pip
/
utils
/
/usr/lib/python2.7/site-packages/pip/utils
mkdir
upload
Name
Size
Mode
Actions
appdirs.py
8811
0644
edit
dl
rm
appdirs.pyc
8607
0644
edit
dl
rm
appdirs.pyo
8607
0644
edit
dl
rm
build.py
1312
0644
edit
dl
rm
build.pyc
1719
0644
edit
dl
rm
build.pyo
1719
0644
edit
dl
rm
deprecation.py
2232
0644
edit
dl
rm
deprecation.pyc
2317
0644
edit
dl
rm
deprecation.pyo
2317
0644
edit
dl
rm
encoding.py
971
0644
edit
dl
rm
encoding.pyc
1282
0644
edit
dl
rm
encoding.pyo
1282
0644
edit
dl
rm
filesystem.py
899
0644
edit
dl
rm
filesystem.pyc
780
0644
edit
dl
rm
filesystem.pyo
780
0644
edit
dl
rm
glibc.py
2939
0644
edit
dl
rm
glibc.pyc
1826
0644
edit
dl
rm
glibc.pyo
1826
0644
edit
dl
rm
hashes.py
2866
0644
edit
dl
rm
hashes.pyc
3961
0644
edit
dl
rm
hashes.pyo
3961
0644
edit
dl
rm
logging.py
3327
0644
edit
dl
rm
logging.pyc
4842
0644
edit
dl
rm
logging.pyo
4842
0644
edit
dl
rm
outdated.py
5989
0644
edit
dl
rm
outdated.pyc
5680
0644
edit
dl
rm
outdated.pyo
5680
0644
edit
dl
rm
packaging.py
2080
0644
edit
dl
rm
packaging.pyc
2461
0644
edit
dl
rm
packaging.pyo
2461
0644
edit
dl
rm
setuptools_build.py
278
0644
edit
dl
rm
setuptools_build.pyc
347
0644
edit
dl
rm
setuptools_build.pyo
347
0644
edit
dl
rm
ui.py
11597
0644
edit
dl
rm
ui.pyc
11683
0644
edit
dl
rm
ui.pyo
11613
0644
edit
dl
rm
__init__.py
27187
0644
edit
dl
rm
__init__.pyc
27725
0644
edit
dl
rm
__init__.pyo
27666
0644
edit
dl
rm
Edit:
/usr/lib/python2.7/site-packages/pip/utils/glibc.py
(2939B)
from __future__ import absolute_import import re import ctypes import platform import warnings def glibc_version_string(): "Returns glibc version string, or None if not using glibc." # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen # manpage says, "If filename is NULL, then the returned handle is for the # main program". This way we can let the linker do the work to figure out # which libc our process is actually using. process_namespace = ctypes.CDLL(None) try: gnu_get_libc_version = process_namespace.gnu_get_libc_version except AttributeError: # Symbol doesn't exist -> therefore, we are not linked to # glibc. return None # Call gnu_get_libc_version, which returns a string like "2.5" gnu_get_libc_version.restype = ctypes.c_char_p version_str = gnu_get_libc_version() # py2 / py3 compatibility: if not isinstance(version_str, str): version_str = version_str.decode("ascii") return version_str # Separated out from have_compatible_glibc for easier unit testing def check_glibc_version(version_str, required_major, minimum_minor): # Parse string and check against requested version. # # We use a regexp instead of str.split because we want to discard any # random junk that might come after the minor version -- this might happen # in patched/forked versions of glibc (e.g. Linaro's version of glibc # uses version strings like "2.20-2014.11"). See gh-3588. m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str) if not m: warnings.warn("Expected glibc version with 2 components major.minor," " got: %s" % version_str, RuntimeWarning) return False return (int(m.group("major")) == required_major and int(m.group("minor")) >= minimum_minor) def have_compatible_glibc(required_major, minimum_minor): version_str = glibc_version_string() if version_str is None: return False return check_glibc_version(version_str, required_major, minimum_minor) # platform.libc_ver regularly returns completely nonsensical glibc # versions. E.g. on my computer, platform says: # # ~$ python2.7 -c 'import platform; print(platform.libc_ver())' # ('glibc', '2.7') # ~$ python3.5 -c 'import platform; print(platform.libc_ver())' # ('glibc', '2.9') # # But the truth is: # # ~$ ldd --version # ldd (Debian GLIBC 2.22-11) 2.22 # # This is unfortunate, because it means that the linehaul data on libc # versions that was generated by pip 8.1.2 and earlier is useless and # misleading. Solution: instead of using platform, use our code that actually # works. def libc_ver(): glibc_version = glibc_version_string() if glibc_version is None: # For non-glibc platforms, fall back on platform.libc_ver return platform.libc_ver() else: return ("glibc", glibc_version)
Save
cmd:
run