Repository: pex-tool/pex

Issue:
Encountered collisions building venv for opencensus 
When trying to create a venv from a pex file that includes opencensus as a dependency a collision is encountered between opencensus and opencensus-context in ubuntu20.04, ubuntu 18.04, and clearlinux for python 3.8.  The dependency appears to work when calling the pex file directly and when installed in different env with other tools such as conda/pip.  

pip install pex  
pex "opencensus==0.8.0" --output-file ~/test.pex 
PEX_VERBOSE=9 pex-tools ~/test.pex venv ~/test.venv

pex: Installed VendorImporter(root='/home/logan/anaconda3/lib/python3.8/site-packages', importables=(_Importable(module='attr', is_pkg=True, path='pex/vendor/_vendored/attrs', prefix='pex.third_party'), _Importable(module='pyparsing', is_pkg=False, path='pex/vendor/_vendored/packaging', prefix='pex.third_party'), _Importable(module='packaging', is_pkg=True, path='pex/vendor/_vendored/packaging', prefix='pex.third_party'), _Importable(module='pip', is_pkg=True, path='pex/vendor/_vendored/pip', prefix='pex.third_party'), _Importable(module='setuptools', is_pkg=True, path='pex/vendor/_vendored/setuptools', prefix='pex.third_party'), _Importable(module='pkg_resources', is_pkg=True, path='pex/vendor/_vendored/setuptools', prefix='pex.third_party'), _Importable(module='wheel', is_pkg=True, path='pex/vendor/_vendored/wheel', prefix='pex.third_party')))
pex: pex.third_party.attr imported via _Loader(module_name='pex.third_party.attr', vendor_module_name='pex.vendor._vendored.attrs.attr')
pex: pex.third_party.attr.exceptions imported via _Loader(module_name='pex.third_party.attr.exceptions', vendor_module_name='pex.vendor._vendored.attrs.attr.exceptions')
pex: pex.third_party.attr imported via _Loader(module_name='pex.third_party.attr', vendor_module_name='pex.vendor._vendored.attrs.attr')
pex: pex.third_party.packaging imported via _Loader(module_name='pex.third_party.packaging', vendor_module_name='pex.vendor._vendored.packaging.packaging')
pex: pex.third_party.pyparsing imported via _Loader(module_name='pex.third_party.pyparsing', vendor_module_name='pex.vendor._vendored.packaging.pyparsing')
pex: pex.third_party.pkg_resources imported via _Loader(module_name='pex.third_party.pkg_resources', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources')
pex: pex.third_party.pkg_resources.extern imported via _Loader(module_name='pex.third_party.pkg_resources.extern', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern')
pex: pex.third_party.pkg_resources.extern.six imported via _Loader(module_name='pex.third_party.pkg_resources.extern.six', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.six')
pex: pex.third_party.pkg_resources.extern.six.moves imported via _Loader(module_name='pex.third_party.pkg_resources.extern.six.moves', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.six.moves')
pex: pex.third_party.pkg_resources.extern.packaging imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging')
pex: pex.third_party.pkg_resources.extern.packaging.version imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.version', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.version')
pex: pex.third_party.pkg_resources.extern.packaging.specifiers imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.specifiers', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.specifiers')
pex: pex.third_party.pkg_resources.extern.pyparsing imported via _Loader(module_name='pex.third_party.pkg_resources.extern.pyparsing', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.pyparsing')
pex: pex.third_party.pkg_resources.extern.six.moves.urllib imported via _Loader(module_name='pex.third_party.pkg_resources.extern.six.moves.urllib', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.six.moves.urllib')
pex: pex.third_party.pkg_resources.extern.packaging.requirements imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.requirements', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.requirements')
pex: pex.third_party.pkg_resources.extern.packaging.markers imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.markers', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.markers')
pex: pex.third_party.pkg_resources imported via _Loader(module_name='pex.third_party.pkg_resources', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources')
pex: pex.third_party.packaging.specifiers imported via _Loader(module_name='pex.third_party.packaging.specifiers', vendor_module_name='pex.vendor._vendored.packaging.packaging.specifiers')
pex: pex.third_party.packaging.utils imported via _Loader(module_name='pex.third_party.packaging.utils', vendor_module_name='pex.vendor._vendored.packaging.packaging.utils')
usage: pex-tools PATH venv [-h] [-b {false,prepend,append}] [-f] [--collisions-ok] [-p] [--copies] [--compile] [--prompt PROMPT] [--rm {pex,all}]
                           [--emit-warnings] [--pex-root PEX_ROOT] [--disable-cache] [--cache-dir CACHE_DIR] [--tmpdir TMPDIR] [--rcfile RC_FILE]
                           PATH
pex-tools PATH venv: error: the following arguments are required: PATH
(base) logan@clr-9aa744e225f54952a9542827dbee7e51~/Documents $ PEX_VERBOSE=9 pex-tools ~/test.pex venv ~/test.venv
pex: Installed VendorImporter(root='/home/logan/anaconda3/lib/python3.8/site-packages', importables=(_Importable(module='attr', is_pkg=True, path='pex/vendor/_vendored/attrs', prefix='pex.third_party'), _Importable(module='pyparsing', is_pkg=False, path='pex/vendor/_vendored/packaging', prefix='pex.third_party'), _Importable(module='packaging', is_pkg=True, path='pex/vendor/_vendored/packaging', prefix='pex.third_party'), _Importable(module='pip', is_pkg=True, path='pex/vendor/_vendored/pip', prefix='pex.third_party'), _Importable(module='setuptools', is_pkg=True, path='pex/vendor/_vendored/setuptools', prefix='pex.third_party'), _Importable(module='pkg_resources', is_pkg=True, path='pex/vendor/_vendored/setuptools', prefix='pex.third_party'), _Importable(module='wheel', is_pkg=True, path='pex/vendor/_vendored/wheel', prefix='pex.third_party')))
pex: pex.third_party.attr imported via _Loader(module_name='pex.third_party.attr', vendor_module_name='pex.vendor._vendored.attrs.attr')
pex: pex.third_party.attr.exceptions imported via _Loader(module_name='pex.third_party.attr.exceptions', vendor_module_name='pex.vendor._vendored.attrs.attr.exceptions')
pex: pex.third_party.attr imported via _Loader(module_name='pex.third_party.attr', vendor_module_name='pex.vendor._vendored.attrs.attr')
pex: pex.third_party.packaging imported via _Loader(module_name='pex.third_party.packaging', vendor_module_name='pex.vendor._vendored.packaging.packaging')
pex: pex.third_party.pyparsing imported via _Loader(module_name='pex.third_party.pyparsing', vendor_module_name='pex.vendor._vendored.packaging.pyparsing')
pex: pex.third_party.pkg_resources imported via _Loader(module_name='pex.third_party.pkg_resources', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources')
pex: pex.third_party.pkg_resources.extern imported via _Loader(module_name='pex.third_party.pkg_resources.extern', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern')
pex: pex.third_party.pkg_resources.extern.six imported via _Loader(module_name='pex.third_party.pkg_resources.extern.six', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.six')
pex: pex.third_party.pkg_resources.extern.six.moves imported via _Loader(module_name='pex.third_party.pkg_resources.extern.six.moves', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.six.moves')
pex: pex.third_party.pkg_resources.extern.packaging imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging')
pex: pex.third_party.pkg_resources.extern.packaging.version imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.version', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.version')
pex: pex.third_party.pkg_resources.extern.packaging.specifiers imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.specifiers', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.specifiers')
pex: pex.third_party.pkg_resources.extern.pyparsing imported via _Loader(module_name='pex.third_party.pkg_resources.extern.pyparsing', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.pyparsing')
pex: pex.third_party.pkg_resources.extern.six.moves.urllib imported via _Loader(module_name='pex.third_party.pkg_resources.extern.six.moves.urllib', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.six.moves.urllib')
pex: pex.third_party.pkg_resources.extern.packaging.requirements imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.requirements', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.requirements')
pex: pex.third_party.pkg_resources.extern.packaging.markers imported via _Loader(module_name='pex.third_party.pkg_resources.extern.packaging.markers', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources.extern.packaging.markers')
pex: pex.third_party.pkg_resources imported via _Loader(module_name='pex.third_party.pkg_resources', vendor_module_name='pex.vendor._vendored.setuptools.pkg_resources')
pex: pex.third_party.packaging.specifiers imported via _Loader(module_name='pex.third_party.packaging.specifiers', vendor_module_name='pex.vendor._vendored.packaging.packaging.specifiers')
pex: pex.third_party.packaging.utils imported via _Loader(module_name='pex.third_party.packaging.utils', vendor_module_name='pex.vendor._vendored.packaging.packaging.utils')
pex: A pyenv installation was found: Pyenv(root="b'/home/logan/.pyenv\\n'")
pex: Executing: /home/logan/anaconda3/bin/python3.8 -s -E -m venv --without-pip /home/logan/test.venv
pex: Executing: PYTHONPATH=/home/logan/.pex/isolated/c15b6e999f7b2b553c5ee23e542ae1e620d5dcf2 /home/logan/test.venv/bin/python3.8 -s -c import os
import sys

from pex.common import atomic_directory, safe_open
from pex.interpreter import PythonIdentity


encoded_identity = PythonIdentity.get(binary='/home/logan/test.venv/bin/python3.8').encode()
with atomic_directory('/home/logan/.pex/interpreters/330d10ba09652a0bb02ca2e829e3ab6924948f73/3d876b2f4fd79a87e8d6166a0616b4ab5fa725d2/ada04c8fa7938a9794defbe762827ae1845e0e0a', exclusive=False) as cache_dir:
    if not cache_dir.is_finalized:
        with safe_open(
            os.path.join(cache_dir.work_dir, 'INTERP-INFO'), 'w'
        ) as fp:
            fp.write(encoded_identity)

pex: creating PythonIdentity from encoded: {"abi_tag": "cp38", "base_prefix": "/home/logan/anaconda3", "binary": "/home/logan/test.venv/bin/python3.8", "configured_macosx_deployment_target": "", "env_markers": {"implementation_name": "cpython", "implementation_version": "3.8.8", "os_name": "posix", "platform_machine": "x86_64", "platform_python_implementation": "CPython", "platform_release": "5.16.1-1116.native", "platform_system": "Linux", "platform_version": "#1 SMP Sun Jan 16 09:46:13 PST 2022", "python_full_version": "3.8.8", "python_version": "3.8", "sys_platform": "linux"}, "platform_tag": "manylinux_2_34_x86_64", "prefix": "/home/logan/test.venv", "python_tag": "cp38", "supported_tags": [["cp38", "cp38", "manylinux_2_34_x86_64"], ["cp38", "cp38", "manylinux_2_33_x86_64"], ["cp38", "cp38", "manylinux_2_32_x86_64"], ["cp38", "cp38", "manylinux_2_31_x86_64"], ["cp38", "cp38", "manylinux_2_30_x86_64"], ["cp38", "cp38", "manylinux_2_29_x86_64"], ["cp38", "cp38", "manylinux_2_28_x86_64"], ["cp38", "cp38", "manylinux_2_27_x86_64"], ["cp38", "cp38", "manylinux_2_26_x86_64"], ["cp38", "cp38", "manylinux_2_25_x86_64"], ["cp38", "cp38", "manylinux_2_24_x86_64"], ["cp38", "cp38", "manylinux_2_23_x86_64"], ["cp38", "cp38", "manylinux_2_22_x86_64"], ["cp38", "cp38", "manylinux_2_21_x86_64"], ["cp38", "cp38", "manylinux_2_20_x86_64"], ["cp38", "cp38", "manylinux_2_19_x86_64"], ["cp38", "cp38", "manylinux_2_18_x86_64"], ["cp38", "cp38", "manylinux_2_17_x86_64"], ["cp38", "cp38", "manylinux2014_x86_64"], ["cp38", "cp38", "manylinux_2_16_x86_64"], ["cp38", "cp38", "manylinux_2_15_x86_64"], ["cp38", "cp38", "manylinux_2_14_x86_64"], ["cp38", "cp38", "manylinux_2_13_x86_64"], ["cp38", "cp38", "manylinux_2_12_x86_64"], ["cp38", "cp38", "manylinux2010_x86_64"], ["cp38", "cp38", "manylinux_2_11_x86_64"], ["cp38", "cp38", "manylinux_2_10_x86_64"], ["cp38", "cp38", "manylinux_2_9_x86_64"], ["cp38", "cp38", "manylinux_2_8_x86_64"], ["cp38", "cp38", "manylinux_2_7_x86_64"], ["cp38", "cp38", "manylinux_2_6_x86_64"], ["cp38", "cp38", "manylinux_2_5_x86_64"], ["cp38", "cp38", "manylinux1_x86_64"], ["cp38", "cp38", "linux_x86_64"], ["cp38", "abi3", "manylinux_2_34_x86_64"], ["cp38", "abi3", "manylinux_2_33_x86_64"], ["cp38", "abi3", "manylinux_2_32_x86_64"], ["cp38", "abi3", "manylinux_2_31_x86_64"], ["cp38", "abi3", "manylinux_2_30_x86_64"], ["cp38", "abi3", "manylinux_2_29_x86_64"], ["cp38", "abi3", "manylinux_2_28_x86_64"], ["cp38", "abi3", "manylinux_2_27_x86_64"], ["cp38", "abi3", "manylinux_2_26_x86_64"], ["cp38", "abi3", "manylinux_2_25_x86_64"], ["cp38", "abi3", "manylinux_2_24_x86_64"], ["cp38", "abi3", "manylinux_2_23_x86_64"], ["cp38", "abi3", "manylinux_2_22_x86_64"], ["cp38", "abi3", "manylinux_2_21_x86_64"], ["cp38", "abi3", "manylinux_2_20_x86_64"], ["cp38", "abi3", "manylinux_2_19_x86_64"], ["cp38", "abi3", "manylinux_2_18_x86_64"], ["cp38", "abi3", "manylinux_2_17_x86_64"], ["cp38", "abi3", "manylinux2014_x86_64"], ["cp38", "abi3", "manylinux_2_16_x86_64"], ["cp38", "abi3", "manylinux_2_15_x86_64"], ["cp38", "abi3", "manylinux_2_14_x86_64"], ["cp38", "abi3", "manylinux_2_13_x86_64"], ["cp38", "abi3", "manylinux_2_12_x86_64"], ["cp38", "abi3", "manylinux2010_x86_64"], ["cp38", "abi3", "manylinux_2_11_x86_64"], ["cp38", "abi3", "manylinux_2_10_x86_64"], ["cp38", "abi3", "manylinux_2_9_x86_64"], ["cp38", "abi3", "manylinux_2_8_x86_64"], ["cp38", "abi3", "manylinux_2_7_x86_64"], ["cp38", "abi3", "manylinux_2_6_x86_64"], ["cp38", "abi3", "manylinux_2_5_x86_64"], ["cp38", "abi3", "manylinux1_x86_64"], ["cp38", "abi3", "linux_x86_64"], ["cp38", "none", "manylinux_2_34_x86_64"], ["cp38", "none", "manylinux_2_33_x86_64"], ["cp38", "none", "manylinux_2_32_x86_64"], ["cp38", "none", "manylinux_2_31_x86_64"], ["cp38", "none", "manylinux_2_30_x86_64"], ["cp38", "none", "manylinux_2_29_x86_64"], ["cp38", "none", "manylinux_2_28_x86_64"], ["cp38", "none", "manylinux_2_27_x86_64"], ["cp38", "none", "manylinux_2_26_x86_64"], ["cp38", "none", "manylinux_2_25_x86_64"], ["cp38", "none", "manylinux_2_24_x86_64"], ["cp38", "none", "manylinux_2_23_x86_64"], ["cp38", "none", "manylinux_2_22_x86_64"], ["cp38", "none", "manylinux_2_21_x86_64"], ["cp38", "none", "manylinux_2_20_x86_64"], ["cp38", "none", "manylinux_2_19_x86_64"], ["cp38", "none", "manylinux_2_18_x86_64"], ["cp38", "none", "manylinux_2_17_x86_64"], ["cp38", "none", "manylinux2014_x86_64"], ["cp38", "none", "manylinux_2_16_x86_64"], ["cp38", "none", "manylinux_2_15_x86_64"], ["cp38", "none", "manylinux_2_14_x86_64"], ["cp38", "none", "manylinux_2_13_x86_64"], ["cp38", "none", "manylinux_2_12_x86_64"], ["cp38", "none", "manylinux2010_x86_64"], ["cp38", "none", "manylinux_2_11_x86_64"], ["cp38", "none", "manylinux_2_10_x86_64"], ["cp38", "none", "manylinux_2_9_x86_64"], ["cp38", "none", "manylinux_2_8_x86_64"], ["cp38", "none", "manylinux_2_7_x86_64"], ["cp38", "none", "manylinux_2_6_x86_64"], ["cp38", "none", "manylinux_2_5_x86_64"], ["cp38", "none", "manylinux1_x86_64"], ["cp38", "none", "linux_x86_64"], ["cp37", "abi3", "manylinux_2_34_x86_64"], ["cp37", "abi3", "manylinux_2_33_x86_64"], ["cp37", "abi3", "manylinux_2_32_x86_64"], ["cp37", "abi3", "manylinux_2_31_x86_64"], ["cp37", "abi3", "manylinux_2_30_x86_64"], ["cp37", "abi3", "manylinux_2_29_x86_64"], ["cp37", "abi3", "manylinux_2_28_x86_64"], ["cp37", "abi3", "manylinux_2_27_x86_64"], ["cp37", "abi3", "manylinux_2_26_x86_64"], ["cp37", "abi3", "manylinux_2_25_x86_64"], ["cp37", "abi3", "manylinux_2_24_x86_64"], ["cp37", "abi3", "manylinux_2_23_x86_64"], ["cp37", "abi3", "manylinux_2_22_x86_64"], ["cp37", "abi3", "manylinux_2_21_x86_64"], ["cp37", "abi3", "manylinux_2_20_x86_64"], ["cp37", "abi3", "manylinux_2_19_x86_64"], ["cp37", "abi3", "manylinux_2_18_x86_64"], ["cp37", "abi3", "manylinux_2_17_x86_64"], ["cp37", "abi3", "manylinux2014_x86_64"], ["cp37", "abi3", "manylinux_2_16_x86_64"], ["cp37", "abi3", "manylinux_2_15_x86_64"], ["cp37", "abi3", "manylinux_2_14_x86_64"], ["cp37", "abi3", "manylinux_2_13_x86_64"], ["cp37", "abi3", "manylinux_2_12_x86_64"], ["cp37", "abi3", "manylinux2010_x86_64"], ["cp37", "abi3", "manylinux_2_11_x86_64"], ["cp37", "abi3", "manylinux_2_10_x86_64"], ["cp37", "abi3", "manylinux_2_9_x86_64"], ["cp37", "abi3", "manylinux_2_8_x86_64"], ["cp37", "abi3", "manylinux_2_7_x86_64"], ["cp37", "abi3", "manylinux_2_6_x86_64"], ["cp37", "abi3", "manylinux_2_5_x86_64"], ["cp37", "abi3", "manylinux1_x86_64"], ["cp37", "abi3", "linux_x86_64"], ["cp36", "abi3", "manylinux_2_34_x86_64"], ["cp36", "abi3", "manylinux_2_33_x86_64"], ["cp36", "abi3", "manylinux_2_32_x86_64"], ["cp36", "abi3", "manylinux_2_31_x86_64"], ["cp36", "abi3", "manylinux_2_30_x86_64"], ["cp36", "abi3", "manylinux_2_29_x86_64"], ["cp36", "abi3", "manylinux_2_28_x86_64"], ["cp36", "abi3", "manylinux_2_27_x86_64"], ["cp36", "abi3", "manylinux_2_26_x86_64"], ["cp36", "abi3", "manylinux_2_25_x86_64"], ["cp36", "abi3", "manylinux_2_24_x86_64"], ["cp36", "abi3", "manylinux_2_23_x86_64"], ["cp36", "abi3", "manylinux_2_22_x86_64"], ["cp36", "abi3", "manylinux_2_21_x86_64"], ["cp36", "abi3", "manylinux_2_20_x86_64"], ["cp36", "abi3", "manylinux_2_19_x86_64"], ["cp36", "abi3", "manylinux_2_18_x86_64"], ["cp36", "abi3", "manylinux_2_17_x86_64"], ["cp36", "abi3", "manylinux2014_x86_64"], ["cp36", "abi3", "manylinux_2_16_x86_64"], ["cp36", "abi3", "manylinux_2_15_x86_64"], ["cp36", "abi3", "manylinux_2_14_x86_64"], ["cp36", "abi3", "manylinux_2_13_x86_64"], ["cp36", "abi3", "manylinux_2_12_x86_64"], ["cp36", "abi3", "manylinux2010_x86_64"], ["cp36", "abi3", "manylinux_2_11_x86_64"], ["cp36", "abi3", "manylinux_2_10_x86_64"], ["cp36", "abi3", "manylinux_2_9_x86_64"], ["cp36", "abi3", "manylinux_2_8_x86_64"], ["cp36", "abi3", "manylinux_2_7_x86_64"], ["cp36", "abi3", "manylinux_2_6_x86_64"], ["cp36", "abi3", "manylinux_2_5_x86_64"], ["cp36", "abi3", "manylinux1_x86_64"], ["cp36", "abi3", "linux_x86_64"], ["cp35", "abi3", "manylinux_2_34_x86_64"], ["cp35", "abi3", "manylinux_2_33_x86_64"], ["cp35", "abi3", "manylinux_2_32_x86_64"], ["cp35", "abi3", "manylinux_2_31_x86_64"], ["cp35", "abi3", "manylinux_2_30_x86_64"], ["cp35", "abi3", "manylinux_2_29_x86_64"], ["cp35", "abi3", "manylinux_2_28_x86_64"], ["cp35", "abi3", "manylinux_2_27_x86_64"], ["cp35", "abi3", "manylinux_2_26_x86_64"], ["cp35", "abi3", "manylinux_2_25_x86_64"], ["cp35", "abi3", "manylinux_2_24_x86_64"], ["cp35", "abi3", "manylinux_2_23_x86_64"], ["cp35", "abi3", "manylinux_2_22_x86_64"], ["cp35", "abi3", "manylinux_2_21_x86_64"], ["cp35", "abi3", "manylinux_2_20_x86_64"], ["cp35", "abi3", "manylinux_2_19_x86_64"], ["cp35", "abi3", "manylinux_2_18_x86_64"], ["cp35", "abi3", "manylinux_2_17_x86_64"], ["cp35", "abi3", "manylinux2014_x86_64"], ["cp35", "abi3", "manylinux_2_16_x86_64"], ["cp35", "abi3", "manylinux_2_15_x86_64"], ["cp35", "abi3", "manylinux_2_14_x86_64"], ["cp35", "abi3", "manylinux_2_13_x86_64"], ["cp35", "abi3", "manylinux_2_12_x86_64"], ["cp35", "abi3", "manylinux2010_x86_64"], ["cp35", "abi3", "manylinux_2_11_x86_64"], ["cp35", "abi3", "manylinux_2_10_x86_64"], ["cp35", "abi3", "manylinux_2_9_x86_64"], ["cp35", "abi3", "manylinux_2_8_x86_64"], ["cp35", "abi3", "manylinux_2_7_x86_64"], ["cp35", "abi3", "manylinux_2_6_x86_64"], ["cp35", "abi3", "manylinux_2_5_x86_64"], ["cp35", "abi3", "manylinux1_x86_64"], ["cp35", "abi3", "linux_x86_64"], ["cp34", "abi3", "manylinux_2_34_x86_64"], ["cp34", "abi3", "manylinux_2_33_x86_64"], ["cp34", "abi3", "manylinux_2_32_x86_64"], ["cp34", "abi3", "manylinux_2_31_x86_64"], ["cp34", "abi3", "manylinux_2_30_x86_64"], ["cp34", "abi3", "manylinux_2_29_x86_64"], ["cp34", "abi3", "manylinux_2_28_x86_64"], ["cp34", "abi3", "manylinux_2_27_x86_64"], ["cp34", "abi3", "manylinux_2_26_x86_64"], ["cp34", "abi3", "manylinux_2_25_x86_64"], ["cp34", "abi3", "manylinux_2_24_x86_64"], ["cp34", "abi3", "manylinux_2_23_x86_64"], ["cp34", "abi3", "manylinux_2_22_x86_64"], ["cp34", "abi3", "manylinux_2_21_x86_64"], ["cp34", "abi3", "manylinux_2_20_x86_64"], ["cp34", "abi3", "manylinux_2_19_x86_64"], ["cp34", "abi3", "manylinux_2_18_x86_64"], ["cp34", "abi3", "manylinux_2_17_x86_64"], ["cp34", "abi3", "manylinux2014_x86_64"], ["cp34", "abi3", "manylinux_2_16_x86_64"], ["cp34", "abi3", "manylinux_2_15_x86_64"], ["cp34", "abi3", "manylinux_2_14_x86_64"], ["cp34", "abi3", "manylinux_2_13_x86_64"], ["cp34", "abi3", "manylinux_2_12_x86_64"], ["cp34", "abi3", "manylinux2010_x86_64"], ["cp34", "abi3", "manylinux_2_11_x86_64"], ["cp34", "abi3", "manylinux_2_10_x86_64"], ["cp34", "abi3", "manylinux_2_9_x86_64"], ["cp34", "abi3", "manylinux_2_8_x86_64"], ["cp34", "abi3", "manylinux_2_7_x86_64"], ["cp34", "abi3", "manylinux_2_6_x86_64"], ["cp34", "abi3", "manylinux_2_5_x86_64"], ["cp34", "abi3", "manylinux1_x86_64"], ["cp34", "abi3", "linux_x86_64"], ["cp33", "abi3", "manylinux_2_34_x86_64"], ["cp33", "abi3", "manylinux_2_33_x86_64"], ["cp33", "abi3", "manylinux_2_32_x86_64"], ["cp33", "abi3", "manylinux_2_31_x86_64"], ["cp33", "abi3", "manylinux_2_30_x86_64"], ["cp33", "abi3", "manylinux_2_29_x86_64"], ["cp33", "abi3", "manylinux_2_28_x86_64"], ["cp33", "abi3", "manylinux_2_27_x86_64"], ["cp33", "abi3", "manylinux_2_26_x86_64"], ["cp33", "abi3", "manylinux_2_25_x86_64"], ["cp33", "abi3", "manylinux_2_24_x86_64"], ["cp33", "abi3", "manylinux_2_23_x86_64"], ["cp33", "abi3", "manylinux_2_22_x86_64"], ["cp33", "abi3", "manylinux_2_21_x86_64"], ["cp33", "abi3", "manylinux_2_20_x86_64"], ["cp33", "abi3", "manylinux_2_19_x86_64"], ["cp33", "abi3", "manylinux_2_18_x86_64"], ["cp33", "abi3", "manylinux_2_17_x86_64"], ["cp33", "abi3", "manylinux2014_x86_64"], ["cp33", "abi3", "manylinux_2_16_x86_64"], ["cp33", "abi3", "manylinux_2_15_x86_64"], ["cp33", "abi3", "manylinux_2_14_x86_64"], ["cp33", "abi3", "manylinux_2_13_x86_64"], ["cp33", "abi3", "manylinux_2_12_x86_64"], ["cp33", "abi3", "manylinux2010_x86_64"], ["cp33", "abi3", "manylinux_2_11_x86_64"], ["cp33", "abi3", "manylinux_2_10_x86_64"], ["cp33", "abi3", "manylinux_2_9_x86_64"], ["cp33", "abi3", "manylinux_2_8_x86_64"], ["cp33", "abi3", "manylinux_2_7_x86_64"], ["cp33", "abi3", "manylinux_2_6_x86_64"], ["cp33", "abi3", "manylinux_2_5_x86_64"], ["cp33", "abi3", "manylinux1_x86_64"], ["cp33", "abi3", "linux_x86_64"], ["cp32", "abi3", "manylinux_2_34_x86_64"], ["cp32", "abi3", "manylinux_2_33_x86_64"], ["cp32", "abi3", "manylinux_2_32_x86_64"], ["cp32", "abi3", "manylinux_2_31_x86_64"], ["cp32", "abi3", "manylinux_2_30_x86_64"], ["cp32", "abi3", "manylinux_2_29_x86_64"], ["cp32", "abi3", "manylinux_2_28_x86_64"], ["cp32", "abi3", "manylinux_2_27_x86_64"], ["cp32", "abi3", "manylinux_2_26_x86_64"], ["cp32", "abi3", "manylinux_2_25_x86_64"], ["cp32", "abi3", "manylinux_2_24_x86_64"], ["cp32", "abi3", "manylinux_2_23_x86_64"], ["cp32", "abi3", "manylinux_2_22_x86_64"], ["cp32", "abi3", "manylinux_2_21_x86_64"], ["cp32", "abi3", "manylinux_2_20_x86_64"], ["cp32", "abi3", "manylinux_2_19_x86_64"], ["cp32", "abi3", "manylinux_2_18_x86_64"], ["cp32", "abi3", "manylinux_2_17_x86_64"], ["cp32", "abi3", "manylinux2014_x86_64"], ["cp32", "abi3", "manylinux_2_16_x86_64"], ["cp32", "abi3", "manylinux_2_15_x86_64"], ["cp32", "abi3", "manylinux_2_14_x86_64"], ["cp32", "abi3", "manylinux_2_13_x86_64"], ["cp32", "abi3", "manylinux_2_12_x86_64"], ["cp32", "abi3", "manylinux2010_x86_64"], ["cp32", "abi3", "manylinux_2_11_x86_64"], ["cp32", "abi3", "manylinux_2_10_x86_64"], ["cp32", "abi3", "manylinux_2_9_x86_64"], ["cp32", "abi3", "manylinux_2_8_x86_64"], ["cp32", "abi3", "manylinux_2_7_x86_64"], ["cp32", "abi3", "manylinux_2_6_x86_64"], ["cp32", "abi3", "manylinux_2_5_x86_64"], ["cp32", "abi3", "manylinux1_x86_64"], ["cp32", "abi3", "linux_x86_64"], ["py38", "none", "manylinux_2_34_x86_64"], ["py38", "none", "manylinux_2_33_x86_64"], ["py38", "none", "manylinux_2_32_x86_64"], ["py38", "none", "manylinux_2_31_x86_64"], ["py38", "none", "manylinux_2_30_x86_64"], ["py38", "none", "manylinux_2_29_x86_64"], ["py38", "none", "manylinux_2_28_x86_64"], ["py38", "none", "manylinux_2_27_x86_64"], ["py38", "none", "manylinux_2_26_x86_64"], ["py38", "none", "manylinux_2_25_x86_64"], ["py38", "none", "manylinux_2_24_x86_64"], ["py38", "none", "manylinux_2_23_x86_64"], ["py38", "none", "manylinux_2_22_x86_64"], ["py38", "none", "manylinux_2_21_x86_64"], ["py38", "none", "manylinux_2_20_x86_64"], ["py38", "none", "manylinux_2_19_x86_64"], ["py38", "none", "manylinux_2_18_x86_64"], ["py38", "none", "manylinux_2_17_x86_64"], ["py38", "none", "manylinux2014_x86_64"], ["py38", "none", "manylinux_2_16_x86_64"], ["py38", "none", "manylinux_2_15_x86_64"], ["py38", "none", "manylinux_2_14_x86_64"], ["py38", "none", "manylinux_2_13_x86_64"], ["py38", "none", "manylinux_2_12_x86_64"], ["py38", "none", "manylinux2010_x86_64"], ["py38", "none", "manylinux_2_11_x86_64"], ["py38", "none", "manylinux_2_10_x86_64"], ["py38", "none", "manylinux_2_9_x86_64"], ["py38", "none", "manylinux_2_8_x86_64"], ["py38", "none", "manylinux_2_7_x86_64"], ["py38", "none", "manylinux_2_6_x86_64"], ["py38", "none", "manylinux_2_5_x86_64"], ["py38", "none", "manylinux1_x86_64"], ["py38", "none", "linux_x86_64"], ["py3", "none", "manylinux_2_34_x86_64"], ["py3", "none", "manylinux_2_33_x86_64"], ["py3", "none", "manylinux_2_32_x86_64"], ["py3", "none", "manylinux_2_31_x86_64"], ["py3", "none", "manylinux_2_30_x86_64"], ["py3", "none", "manylinux_2_29_x86_64"], ["py3", "none", "manylinux_2_28_x86_64"], ["py3", "none", "manylinux_2_27_x86_64"], ["py3", "none", "manylinux_2_26_x86_64"], ["py3", "none", "manylinux_2_25_x86_64"], ["py3", "none", "manylinux_2_24_x86_64"], ["py3", "none", "manylinux_2_23_x86_64"], ["py3", "none", "manylinux_2_22_x86_64"], ["py3", "none", "manylinux_2_21_x86_64"], ["py3", "none", "manylinux_2_20_x86_64"], ["py3", "none", "manylinux_2_19_x86_64"], ["py3", "none", "manylinux_2_18_x86_64"], ["py3", "none", "manylinux_2_17_x86_64"], ["py3", "none", "manylinux2014_x86_64"], ["py3", "none", "manylinux_2_16_x86_64"], ["py3", "none", "manylinux_2_15_x86_64"], ["py3", "none", "manylinux_2_14_x86_64"], ["py3", "none", "manylinux_2_13_x86_64"], ["py3", "none", "manylinux_2_12_x86_64"], ["py3", "none", "manylinux2010_x86_64"], ["py3", "none", "manylinux_2_11_x86_64"], ["py3", "none", "manylinux_2_10_x86_64"], ["py3", "none", "manylinux_2_9_x86_64"], ["py3", "none", "manylinux_2_8_x86_64"], ["py3", "none", "manylinux_2_7_x86_64"], ["py3", "none", "manylinux_2_6_x86_64"], ["py3", "none", "manylinux_2_5_x86_64"], ["py3", "none", "manylinux1_x86_64"], ["py3", "none", "linux_x86_64"], ["py37", "none", "manylinux_2_34_x86_64"], ["py37", "none", "manylinux_2_33_x86_64"], ["py37", "none", "manylinux_2_32_x86_64"], ["py37", "none", "manylinux_2_31_x86_64"], ["py37", "none", "manylinux_2_30_x86_64"], ["py37", "none", "manylinux_2_29_x86_64"], ["py37", "none", "manylinux_2_28_x86_64"], ["py37", "none", "manylinux_2_27_x86_64"], ["py37", "none", "manylinux_2_26_x86_64"], ["py37", "none", "manylinux_2_25_x86_64"], ["py37", "none", "manylinux_2_24_x86_64"], ["py37", "none", "manylinux_2_23_x86_64"], ["py37", "none", "manylinux_2_22_x86_64"], ["py37", "none", "manylinux_2_21_x86_64"], ["py37", "none", "manylinux_2_20_x86_64"], ["py37", "none", "manylinux_2_19_x86_64"], ["py37", "none", "manylinux_2_18_x86_64"], ["py37", "none", "manylinux_2_17_x86_64"], ["py37", "none", "manylinux2014_x86_64"], ["py37", "none", "manylinux_2_16_x86_64"], ["py37", "none", "manylinux_2_15_x86_64"], ["py37", "none", "manylinux_2_14_x86_64"], ["py37", "none", "manylinux_2_13_x86_64"], ["py37", "none", "manylinux_2_12_x86_64"], ["py37", "none", "manylinux2010_x86_64"], ["py37", "none", "manylinux_2_11_x86_64"], ["py37", "none", "manylinux_2_10_x86_64"], ["py37", "none", "manylinux_2_9_x86_64"], ["py37", "none", "manylinux_2_8_x86_64"], ["py37", "none", "manylinux_2_7_x86_64"], ["py37", "none", "manylinux_2_6_x86_64"], ["py37", "none", "manylinux_2_5_x86_64"], ["py37", "none", "manylinux1_x86_64"], ["py37", "none", "linux_x86_64"], ["py36", "none", "manylinux_2_34_x86_64"], ["py36", "none", "manylinux_2_33_x86_64"], ["py36", "none", "manylinux_2_32_x86_64"], ["py36", "none", "manylinux_2_31_x86_64"], ["py36", "none", "manylinux_2_30_x86_64"], ["py36", "none", "manylinux_2_29_x86_64"], ["py36", "none", "manylinux_2_28_x86_64"], ["py36", "none", "manylinux_2_27_x86_64"], ["py36", "none", "manylinux_2_26_x86_64"], ["py36", "none", "manylinux_2_25_x86_64"], ["py36", "none", "manylinux_2_24_x86_64"], ["py36", "none", "manylinux_2_23_x86_64"], ["py36", "none", "manylinux_2_22_x86_64"], ["py36", "none", "manylinux_2_21_x86_64"], ["py36", "none", "manylinux_2_20_x86_64"], ["py36", "none", "manylinux_2_19_x86_64"], ["py36", "none", "manylinux_2_18_x86_64"], ["py36", "none", "manylinux_2_17_x86_64"], ["py36", "none", "manylinux2014_x86_64"], ["py36", "none", "manylinux_2_16_x86_64"], ["py36", "none", "manylinux_2_15_x86_64"], ["py36", "none", "manylinux_2_14_x86_64"], ["py36", "none", "manylinux_2_13_x86_64"], ["py36", "none", "manylinux_2_12_x86_64"], ["py36", "none", "manylinux2010_x86_64"], ["py36", "none", "manylinux_2_11_x86_64"], ["py36", "none", "manylinux_2_10_x86_64"], ["py36", "none", "manylinux_2_9_x86_64"], ["py36", "none", "manylinux_2_8_x86_64"], ["py36", "none", "manylinux_2_7_x86_64"], ["py36", "none", "manylinux_2_6_x86_64"], ["py36", "none", "manylinux_2_5_x86_64"], ["py36", "none", "manylinux1_x86_64"], ["py36", "none", "linux_x86_64"], ["py35", "none", "manylinux_2_34_x86_64"], ["py35", "none", "manylinux_2_33_x86_64"], ["py35", "none", "manylinux_2_32_x86_64"], ["py35", "none", "manylinux_2_31_x86_64"], ["py35", "none", "manylinux_2_30_x86_64"], ["py35", "none", "manylinux_2_29_x86_64"], ["py35", "none", "manylinux_2_28_x86_64"], ["py35", "none", "manylinux_2_27_x86_64"], ["py35", "none", "manylinux_2_26_x86_64"], ["py35", "none", "manylinux_2_25_x86_64"], ["py35", "none", "manylinux_2_24_x86_64"], ["py35", "none", "manylinux_2_23_x86_64"], ["py35", "none", "manylinux_2_22_x86_64"], ["py35", "none", "manylinux_2_21_x86_64"], ["py35", "none", "manylinux_2_20_x86_64"], ["py35", "none", "manylinux_2_19_x86_64"], ["py35", "none", "manylinux_2_18_x86_64"], ["py35", "none", "manylinux_2_17_x86_64"], ["py35", "none", "manylinux2014_x86_64"], ["py35", "none", "manylinux_2_16_x86_64"], ["py35", "none", "manylinux_2_15_x86_64"], ["py35", "none", "manylinux_2_14_x86_64"], ["py35", "none", "manylinux_2_13_x86_64"], ["py35", "none", "manylinux_2_12_x86_64"], ["py35", "none", "manylinux2010_x86_64"], ["py35", "none", "manylinux_2_11_x86_64"], ["py35", "none", "manylinux_2_10_x86_64"], ["py35", "none", "manylinux_2_9_x86_64"], ["py35", "none", "manylinux_2_8_x86_64"], ["py35", "none", "manylinux_2_7_x86_64"], ["py35", "none", "manylinux_2_6_x86_64"], ["py35", "none", "manylinux_2_5_x86_64"], ["py35", "none", "manylinux1_x86_64"], ["py35", "none", "linux_x86_64"], ["py34", "none", "manylinux_2_34_x86_64"], ["py34", "none", "manylinux_2_33_x86_64"], ["py34", "none", "manylinux_2_32_x86_64"], ["py34", "none", "manylinux_2_31_x86_64"], ["py34", "none", "manylinux_2_30_x86_64"], ["py34", "none", "manylinux_2_29_x86_64"], ["py34", "none", "manylinux_2_28_x86_64"], ["py34", "none", "manylinux_2_27_x86_64"], ["py34", "none", "manylinux_2_26_x86_64"], ["py34", "none", "manylinux_2_25_x86_64"], ["py34", "none", "manylinux_2_24_x86_64"], ["py34", "none", "manylinux_2_23_x86_64"], ["py34", "none", "manylinux_2_22_x86_64"], ["py34", "none", "manylinux_2_21_x86_64"], ["py34", "none", "manylinux_2_20_x86_64"], ["py34", "none", "manylinux_2_19_x86_64"], ["py34", "none", "manylinux_2_18_x86_64"], ["py34", "none", "manylinux_2_17_x86_64"], ["py34", "none", "manylinux2014_x86_64"], ["py34", "none", "manylinux_2_16_x86_64"], ["py34", "none", "manylinux_2_15_x86_64"], ["py34", "none", "manylinux_2_14_x86_64"], ["py34", "none", "manylinux_2_13_x86_64"], ["py34", "none", "manylinux_2_12_x86_64"], ["py34", "none", "manylinux2010_x86_64"], ["py34", "none", "manylinux_2_11_x86_64"], ["py34", "none", "manylinux_2_10_x86_64"], ["py34", "none", "manylinux_2_9_x86_64"], ["py34", "none", "manylinux_2_8_x86_64"], ["py34", "none", "manylinux_2_7_x86_64"], ["py34", "none", "manylinux_2_6_x86_64"], ["py34", "none", "manylinux_2_5_x86_64"], ["py34", "none", "manylinux1_x86_64"], ["py34", "none", "linux_x86_64"], ["py33", "none", "manylinux_2_34_x86_64"], ["py33", "none", "manylinux_2_33_x86_64"], ["py33", "none", "manylinux_2_32_x86_64"], ["py33", "none", "manylinux_2_31_x86_64"], ["py33", "none", "manylinux_2_30_x86_64"], ["py33", "none", "manylinux_2_29_x86_64"], ["py33", "none", "manylinux_2_28_x86_64"], ["py33", "none", "manylinux_2_27_x86_64"], ["py33", "none", "manylinux_2_26_x86_64"], ["py33", "none", "manylinux_2_25_x86_64"], ["py33", "none", "manylinux_2_24_x86_64"], ["py33", "none", "manylinux_2_23_x86_64"], ["py33", "none", "manylinux_2_22_x86_64"], ["py33", "none", "manylinux_2_21_x86_64"], ["py33", "none", "manylinux_2_20_x86_64"], ["py33", "none", "manylinux_2_19_x86_64"], ["py33", "none", "manylinux_2_18_x86_64"], ["py33", "none", "manylinux_2_17_x86_64"], ["py33", "none", "manylinux2014_x86_64"], ["py33", "none", "manylinux_2_16_x86_64"], ["py33", "none", "manylinux_2_15_x86_64"], ["py33", "none", "manylinux_2_14_x86_64"], ["py33", "none", "manylinux_2_13_x86_64"], ["py33", "none", "manylinux_2_12_x86_64"], ["py33", "none", "manylinux2010_x86_64"], ["py33", "none", "manylinux_2_11_x86_64"], ["py33", "none", "manylinux_2_10_x86_64"], ["py33", "none", "manylinux_2_9_x86_64"], ["py33", "none", "manylinux_2_8_x86_64"], ["py33", "none", "manylinux_2_7_x86_64"], ["py33", "none", "manylinux_2_6_x86_64"], ["py33", "none", "manylinux_2_5_x86_64"], ["py33", "none", "manylinux1_x86_64"], ["py33", "none", "linux_x86_64"], ["py32", "none", "manylinux_2_34_x86_64"], ["py32", "none", "manylinux_2_33_x86_64"], ["py32", "none", "manylinux_2_32_x86_64"], ["py32", "none", "manylinux_2_31_x86_64"], ["py32", "none", "manylinux_2_30_x86_64"], ["py32", "none", "manylinux_2_29_x86_64"], ["py32", "none", "manylinux_2_28_x86_64"], ["py32", "none", "manylinux_2_27_x86_64"], ["py32", "none", "manylinux_2_26_x86_64"], ["py32", "none", "manylinux_2_25_x86_64"], ["py32", "none", "manylinux_2_24_x86_64"], ["py32", "none", "manylinux_2_23_x86_64"], ["py32", "none", "manylinux_2_22_x86_64"], ["py32", "none", "manylinux_2_21_x86_64"], ["py32", "none", "manylinux_2_20_x86_64"], ["py32", "none", "manylinux_2_19_x86_64"], ["py32", "none", "manylinux_2_18_x86_64"], ["py32", "none", "manylinux_2_17_x86_64"], ["py32", "none", "manylinux2014_x86_64"], ["py32", "none", "manylinux_2_16_x86_64"], ["py32", "none", "manylinux_2_15_x86_64"], ["py32", "none", "manylinux_2_14_x86_64"], ["py32", "none", "manylinux_2_13_x86_64"], ["py32", "none", "manylinux_2_12_x86_64"], ["py32", "none", "manylinux2010_x86_64"], ["py32", "none", "manylinux_2_11_x86_64"], ["py32", "none", "manylinux_2_10_x86_64"], ["py32", "none", "manylinux_2_9_x86_64"], ["py32", "none", "manylinux_2_8_x86_64"], ["py32", "none", "manylinux_2_7_x86_64"], ["py32", "none", "manylinux_2_6_x86_64"], ["py32", "none", "manylinux_2_5_x86_64"], ["py32", "none", "manylinux1_x86_64"], ["py32", "none", "linux_x86_64"], ["py31", "none", "manylinux_2_34_x86_64"], ["py31", "none", "manylinux_2_33_x86_64"], ["py31", "none", "manylinux_2_32_x86_64"], ["py31", "none", "manylinux_2_31_x86_64"], ["py31", "none", "manylinux_2_30_x86_64"], ["py31", "none", "manylinux_2_29_x86_64"], ["py31", "none", "manylinux_2_28_x86_64"], ["py31", "none", "manylinux_2_27_x86_64"], ["py31", "none", "manylinux_2_26_x86_64"], ["py31", "none", "manylinux_2_25_x86_64"], ["py31", "none", "manylinux_2_24_x86_64"], ["py31", "none", "manylinux_2_23_x86_64"], ["py31", "none", "manylinux_2_22_x86_64"], ["py31", "none", "manylinux_2_21_x86_64"], ["py31", "none", "manylinux_2_20_x86_64"], ["py31", "none", "manylinux_2_19_x86_64"], ["py31", "none", "manylinux_2_18_x86_64"], ["py31", "none", "manylinux_2_17_x86_64"], ["py31", "none", "manylinux2014_x86_64"], ["py31", "none", "manylinux_2_16_x86_64"], ["py31", "none", "manylinux_2_15_x86_64"], ["py31", "none", "manylinux_2_14_x86_64"], ["py31", "none", "manylinux_2_13_x86_64"], ["py31", "none", "manylinux_2_12_x86_64"], ["py31", "none", "manylinux2010_x86_64"], ["py31", "none", "manylinux_2_11_x86_64"], ["py31", "none", "manylinux_2_10_x86_64"], ["py31", "none", "manylinux_2_9_x86_64"], ["py31", "none", "manylinux_2_8_x86_64"], ["py31", "none", "manylinux_2_7_x86_64"], ["py31", "none", "manylinux_2_6_x86_64"], ["py31", "none", "manylinux_2_5_x86_64"], ["py31", "none", "manylinux1_x86_64"], ["py31", "none", "linux_x86_64"], ["py30", "none", "manylinux_2_34_x86_64"], ["py30", "none", "manylinux_2_33_x86_64"], ["py30", "none", "manylinux_2_32_x86_64"], ["py30", "none", "manylinux_2_31_x86_64"], ["py30", "none", "manylinux_2_30_x86_64"], ["py30", "none", "manylinux_2_29_x86_64"], ["py30", "none", "manylinux_2_28_x86_64"], ["py30", "none", "manylinux_2_27_x86_64"], ["py30", "none", "manylinux_2_26_x86_64"], ["py30", "none", "manylinux_2_25_x86_64"], ["py30", "none", "manylinux_2_24_x86_64"], ["py30", "none", "manylinux_2_23_x86_64"], ["py30", "none", "manylinux_2_22_x86_64"], ["py30", "none", "manylinux_2_21_x86_64"], ["py30", "none", "manylinux_2_20_x86_64"], ["py30", "none", "manylinux_2_19_x86_64"], ["py30", "none", "manylinux_2_18_x86_64"], ["py30", "none", "manylinux_2_17_x86_64"], ["py30", "none", "manylinux2014_x86_64"], ["py30", "none", "manylinux_2_16_x86_64"], ["py30", "none", "manylinux_2_15_x86_64"], ["py30", "none", "manylinux_2_14_x86_64"], ["py30", "none", "manylinux_2_13_x86_64"], ["py30", "none", "manylinux_2_12_x86_64"], ["py30", "none", "manylinux2010_x86_64"], ["py30", "none", "manylinux_2_11_x86_64"], ["py30", "none", "manylinux_2_10_x86_64"], ["py30", "none", "manylinux_2_9_x86_64"], ["py30", "none", "manylinux_2_8_x86_64"], ["py30", "none", "manylinux_2_7_x86_64"], ["py30", "none", "manylinux_2_6_x86_64"], ["py30", "none", "manylinux_2_5_x86_64"], ["py30", "none", "manylinux1_x86_64"], ["py30", "none", "linux_x86_64"], ["py38", "none", "any"], ["py3", "none", "any"], ["py37", "none", "any"], ["py36", "none", "any"], ["py35", "none", "any"], ["py34", "none", "any"], ["py33", "none", "any"], ["py32", "none", "any"], ["py31", "none", "any"], ["py30", "none", "any"]], "sys_path": ["/home/logan/anaconda3/lib/python38.zip", "/home/logan/anaconda3/lib/python3.8", "/home/logan/anaconda3/lib/python3.8/lib-dynload", "/home/logan/test.venv/lib/python3.8/site-packages"], "version": [3, 8, 8]}
pex: Executing PEX_TOOLS venv :: Laying out PEX zipfile /home/logan/test.pex :: Installing /home/logan/test.pex to /home/logan/.pex/unzipped_pexes/6c8f4531dpex: Executing PEX_TOOLS venv :: Laying out PEX zipfile /home/logan/test.pex                                                                                pex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding cachetpex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding certifpex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding charsepex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding googlepex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding googlepex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding googlepex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding idna 3pex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding opencepex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding opencepex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding protobpex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding pyasn1pex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding pyasn1pex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding requespex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding rsa 4.pex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding setuptpex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding six 1.pex: Executing PEX_TOOLS venv :: Searching dependency cache: /home/logan/.pex/unzipped_pexes/6c8f4531d6911d2327d891f9631ef19ccb4820a9/.deps :: Adding urllibpex: Executing PEX_TOOLS venv :: Resolving opencensus==0.8.0                                                                                                pex: Skipping activation of `contextvars; python_version >= "3.6" and python_version < "3.7"` due to environment marker de-selection
pex: Skipping activation of `google-api-core<2.0.0,>=1.0.0; python_version < "3.6"` due to environment marker de-selection
pex: Skipping activation of `grpcio>=1.0.0; extra == "grpc"` due to environment marker de-selection
pex: Skipping activation of `sphinx; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `jaraco.packaging>=8.2; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `rst.linker>=1.9; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `jaraco.tidelift>=1.4; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `pygments-github-lexers==0.0.5; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `sphinx-favicon; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `sphinx-inline-tabs; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `sphinxcontrib-towncrier; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `furo; extra == "docs"` due to environment marker de-selection
pex: Skipping activation of `pytest>=6; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-checkdocs>=2.4; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-flake8; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-cov; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-enabler>=1.0.1; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-perf; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `mock; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `flake8-2020; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `virtualenv>=13.0.0; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `wheel; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `paver; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pip>=19.1; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `jaraco.envs>=2.2; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-xdist; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `sphinx>=4.3.2; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `jaraco.path>=3.2.0; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `build[virtualenv]; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `filelock>=3.4.0; extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `pytest-xdist; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `pytest-enabler; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `virtualenv>=13.0.0; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `tomli; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `wheel; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `jaraco.path>=3.2.0; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `jaraco.envs>=2.2; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `build[virtualenv]; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `filelock>=3.4.0; extra == "testing-integration"` due to environment marker de-selection
pex: Skipping activation of `pytest-black>=0.3.7; platform_python_implementation != "PyPy" and extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `pytest-mypy; platform_python_implementation != "PyPy" and extra == "testing"` due to environment marker de-selection
pex: Skipping activation of `enum34>=1.1.10; python_version < "3.4"` due to environment marker de-selection
pex: Skipping activation of `rsa<4.6; python_version < "3.6"` due to environment marker de-selection
pex: Skipping activation of `requests<3.0.0dev,>=2.20.0; extra == "aiohttp"` due to environment marker de-selection
pex: Skipping activation of `aiohttp<4.0.0dev,>=3.6.2; python_version >= "3.6" and extra == "aiohttp"` due to environment marker de-selection
pex: Skipping activation of `pyopenssl>=20.0.0; extra == "pyopenssl"` due to environment marker de-selection
pex: Skipping activation of `pyu2f>=0.1.5; extra == "reauth"` due to environment marker de-selection
pex: Skipping activation of `brotlipy>=0.6.0; extra == "brotli"` due to environment marker de-selection
pex: Skipping activation of `pyOpenSSL>=0.14; extra == "secure"` due to environment marker de-selection
pex: Skipping activation of `cryptography>=1.3.4; extra == "secure"` due to environment marker de-selection
pex: Skipping activation of `idna>=2.0.0; extra == "secure"` due to environment marker de-selection
pex: Skipping activation of `certifi; extra == "secure"` due to environment marker de-selection
pex: Skipping activation of `ipaddress; python_version == "2.7" and extra == "secure"` due to environment marker de-selection
pex: Skipping activation of `PySocks!=1.5.7,<2.0,>=1.5.6; extra == "socks"` due to environment marker de-selection
pex: Skipping activation of `chardet<5,>=3.0.2; python_version < "3"` due to environment marker de-selection
pex: Skipping activation of `idna<3,>=2.5; python_version < "3"` due to environment marker de-selection
pex: Skipping activation of `unicodedata2; extra == "unicode_backport"` due to environment marker de-selection
pex: Skipping activation of `PySocks!=1.5.7,>=1.5.6; extra == "socks"` due to environment marker de-selection
pex: Skipping activation of `win-inet-pton; (sys_platform == "win32" and python_version == "2.7") and extra == "socks"` due to environment marker de-selection
pex: Skipping activation of `chardet<5,>=3.0.2; extra == "use_chardet_on_py3"` due to environment marker de-selection
pex: Skipping activation of `grpcio<2.0dev,>=1.33.2; extra == "grpc"` due to environment marker de-selection
pex: Skipping activation of `grpcio-status<2.0dev,>=1.33.2; extra == "grpc"` due to environment marker de-selection
pex: Skipping activation of `grpcio-gcp>=0.2.2; extra == "grpcgcp"` due to environment marker de-selection
pex: Skipping activation of `grpcio-gcp>=0.2.2; extra == "grpcio-gcp"` due to environment marker de-selection
Traceback (most recent call last):
  File "/home/logan/anaconda3/bin/pex-tools", line 8, in <module>
    sys.exit(main())
  File "/home/logan/anaconda3/lib/python3.8/site-packages/pex/tools/main.py", line 90, in main
    result = catch(pex_command.run, pex)
  File "/home/logan/anaconda3/lib/python3.8/site-packages/pex/commands/command.py", line 130, in catch
    return func(*args, **kwargs)
  File "/home/logan/anaconda3/lib/python3.8/site-packages/pex/tools/commands/venv.py", line 533, in run
    populate_venv_with_pex(
  File "/home/logan/anaconda3/lib/python3.8/site-packages/pex/tools/commands/venv.py", line 212, in populate_venv_with_pex
    raise CollisionError(message)
pex.tools.commands.venv.CollisionError: Encountered collisions building venv at /home/logan/test.venv from /home/logan/test.pex:
1. /home/logan/test.venv/lib/python3.8/site-packages/opencensus/__init__.py was provided by:
        /home/logan/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/__init__.py
        /home/logan/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/__init__.py
2. /home/logan/test.venv/lib/python3.8/site-packages/opencensus/common/__init__.py was provided by:
        /home/logan/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/common/__init__.py
        /home/logan/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/common/__init__.py


Discussion:
1stly, you can work around this with `--collisions-ok`:
```
$ pex-tools . venv -h
usage: pex-tools PATH venv [-h] [-b {false,prepend,append}] [-f] [--collisions-ok] [-p] [--copies] [--compile] [--prompt PROMPT] [--rm {pex,all}] [--emit-warnings] [--pex-root PEX_ROOT] [--disable-cache] [--cache-dir CACHE_DIR] [--tmpdir TMPDIR] [--rcfile RC_FILE] PATH

Creates a venv from the PEX file.

positional arguments:
  PATH                  The directory to create the virtual environment in.

options:
  -h, --help            show this help message and exit
  -b {false,prepend,append}, --bin-path {false,prepend,append}
                        Add the venv bin dir to the PATH in the __main__.py script. (default: false)
  -f, --force           If the venv directory already exists, overwrite it. (default: False)
  --collisions-ok       Don't error if population of the venv encounters distributions in the PEX file with colliding files, just emit a warning. (default: False)
...
```

Like so:
```
$ python -mpex opencensus==0.8.0 opencensus_context==0.1.2 -o issue1570.pex
$ pex-tools issue1570.pex venv --collisions-ok issue1570.venv
/home/jsirois/.venv/pex/lib/python3.10/site-packages/pex/tools/commands/venv.py:213: PEXWarning: Encountered collisions building venv at /home/jsirois/dev/pantsbuild/jsirois-pex/issue1570.venv from issue1570.pex:
1. /home/jsirois/dev/pantsbuild/jsirois-pex/issue1570.venv/lib/python3.10/site-packages/opencensus/__init__.py was provided by:
	/home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/__init__.py
	/home/jsirois/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/__init__.py
2. /home/jsirois/dev/pantsbuild/jsirois-pex/issue1570.venv/lib/python3.10/site-packages/opencensus/common/__init__.py was provided by:
	/home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/common/__init__.py
	/home/jsirois/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/common/__init__.py
  pex_warnings.warn(message)
$ issue1570.venv/bin/python -c 'import opencensus, opencensus.common; print(opencensus.__file__); print(opencensus.common.__file__)'
/home/jsirois/dev/pantsbuild/jsirois-pex/issue1570.venv/lib/python3.10/site-packages/opencensus/__init__.py
/home/jsirois/dev/pantsbuild/jsirois-pex/issue1570.venv/lib/python3.10/site-packages/opencensus/common/__init__.py
```

Secondly, this seems like a bug in collision handling to me since the files have the same contents:
```
$ sha256sum /home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/__init__.py /home/jsirois/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/__init__.py
174503e380ee642a55bc8d4f5f9ad6e0570a434d3839176a78e85fe09b217886  /home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/__init__.py
174503e380ee642a55bc8d4f5f9ad6e0570a434d3839176a78e85fe09b217886  /home/jsirois/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/__init__.py
$ sha256sum /home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/common/__init__.py /home/jsirois/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/common/__init__.py
174503e380ee642a55bc8d4f5f9ad6e0570a434d3839176a78e85fe09b217886  /home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/common/__init__.py
174503e380ee642a55bc8d4f5f9ad6e0570a434d3839176a78e85fe09b217886  /home/jsirois/.pex/installed_wheels/d24eb2bfcacc6244e4fe38dcf88bcac2addfc42d/opencensus_context-0.1.2-py2.py3-none-any.whl/opencensus/common/__init__.py
```

Not only that, the duplicate files are a correct implementation of namespace packages:
```
$ cat /home/jsirois/.pex/installed_wheels/bf25dbafeb5c2c0b1c1752d56a4eef578917d312/opencensus-0.8.0-py2.py3-none-any.whl/opencensus/__init__.py
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
```
Pex should support this; so I'm going to mark this as a bug.


Resolving patch:
diff --git a/pex/tools/commands/venv.py b/pex/tools/commands/venv.py
--- a/pex/tools/commands/venv.py
+++ b/pex/tools/commands/venv.py
@@ -24,6 +24,7 @@
 from pex.tools.commands.virtualenv import PipUnavailableError, Virtualenv
 from pex.tracer import TRACER
 from pex.typing import TYPE_CHECKING
+from pex.util import CacheHelper
 from pex.venv_bin_path import BinPath
 
 if TYPE_CHECKING:
@@ -194,23 +195,39 @@ def record_provenance(src_to_dst):
         if os.path.isdir(dist_bin_dir):
             record_provenance(_copytree(src=dist_bin_dir, dst=venv.bin_dir, symlink=symlink))
 
-    collisions = {dst: srcs for dst, srcs in provenance.items() if len(srcs) > 1}
-    if collisions:
-        message_lines = [
-            "Encountered {collision} building venv at {venv_dir} from {pex}:".format(
-                collision=pluralize(collisions, "collision"), venv_dir=venv_dir, pex=pex.path()
-            )
-        ]
-        for index, (dst, srcs) in enumerate(collisions.items(), start=1):
-            message_lines.append(
-                "{index}. {dst} was provided by:\n\t{srcs}".format(
-                    index=index, dst=dst, srcs="\n\t".join(srcs)
+    potential_collisions = {dst: srcs for dst, srcs in provenance.items() if len(srcs) > 1}
+    if potential_collisions:
+        collisions = {}
+        for dst, srcs in potential_collisions.items():
+            contents = defaultdict(list)
+            for src in srcs:
+                contents[CacheHelper.hash(src)].append(src)
+            if len(contents) > 1:
+                collisions[dst] = contents
+
+        if collisions:
+            message_lines = [
+                "Encountered {collision} building venv at {venv_dir} from {pex}:".format(
+                    collision=pluralize(collisions, "collision"), venv_dir=venv_dir, pex=pex.path()
                 )
-            )
-        message = "\n".join(message_lines)
-        if not collisions_ok:
-            raise CollisionError(message)
-        pex_warnings.warn(message)
+            ]
+            for index, (dst, contents) in enumerate(collisions.items(), start=1):
+                message_lines.append(
+                    "{index}. {dst} was provided by:\n\t{srcs}".format(
+                        index=index,
+                        dst=dst,
+                        srcs="\n\t".join(
+                            "sha1:{fingerprint} -> {srcs}".format(
+                                fingerprint=fingerprint, srcs=", ".join(srcs)
+                            )
+                            for fingerprint, srcs in contents.items()
+                        ),
+                    )
+                )
+            message = "\n".join(message_lines)
+            if not collisions_ok:
+                raise CollisionError(message)
+            pex_warnings.warn(message)
 
     if rel_extra_paths:
         with open(os.path.join(venv.site_packages_dir, "pex-ns-pkgs.pth"), "w") as fp:
diff --git a/pex/tools/commands/virtualenv.py b/pex/tools/commands/virtualenv.py
--- a/pex/tools/commands/virtualenv.py
+++ b/pex/tools/commands/virtualenv.py
@@ -244,13 +244,9 @@ def rewrite_scripts(
         python_args=None,  # type: Optional[str]
     ):
         # type: (...) -> Iterator[str]
-        python_scripts = []
-        for executable in self.iter_executables():
-            if executable in self._base_bin:
-                continue
-            if not _is_python_script(executable):
-                continue
-            python_scripts.append(executable)
+        python_scripts = [
+            executable for executable in self.iter_executables() if _is_python_script(executable)
+        ]
         if python_scripts:
             with closing(
                 fileinput.input(files=sorted(python_scripts), inplace=True, mode="rb")


Test patch:
diff --git a/tests/integration/tools/commands/test_venv.py b/tests/integration/tools/commands/test_venv.py
new file mode 100644
--- /dev/null
+++ b/tests/integration/tools/commands/test_venv.py
@@ -0,0 +1,135 @@
+# Copyright 2022 Pants project contributors (see CONTRIBUTORS.md).
+# Licensed under the Apache License, Version 2.0 (see LICENSE).
+
+import os
+import subprocess
+import sys
+from textwrap import dedent
+
+from pex.common import safe_open
+from pex.testing import IntegResults, run_pex_command
+from pex.tools.commands.virtualenv import Virtualenv
+from pex.typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+    from typing import Any
+
+
+def run_pex_tools(*args):
+    # type: (*str) -> IntegResults
+
+    process = subprocess.Popen(
+        args=[sys.executable, "-mpex.tools"] + list(args),
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+    )
+    stdout, stderr = process.communicate()
+    return IntegResults(
+        output=stdout.decode("utf-8"), error=stderr.decode("utf-8"), return_code=process.returncode
+    )
+
+
+def test_collisions(
+    tmpdir,  # type: Any
+    pex_bdist,  # type: str
+):
+    # type: (...) -> None
+
+    pex_root = os.path.join(str(tmpdir), "pex_root")
+
+    collision_src = os.path.join(str(tmpdir), "src")
+    with safe_open(os.path.join(collision_src, "will_not_collide_with_pex_module.py"), "w") as fp:
+        fp.write(
+            dedent(
+                """\
+                def verb():
+                  return 42
+                """
+            )
+        )
+    with safe_open(os.path.join(collision_src, "setup.cfg"), "w") as fp:
+        fp.write(
+            dedent(
+                """\
+                [metadata]
+                name = collision
+                version = 0.0.1
+
+                [options]
+                py_modules =
+                    will_not_collide_with_pex_module
+                
+                [options.entry_points]
+                # Although will_not_collide_with_pex_module does not collide with Pex, the 
+                # generated bin/pex script will collide with the Pex pex script.
+                console_scripts =
+                    pex = will_not_collide_with_pex_module:verb
+                """
+            )
+        )
+    with safe_open(os.path.join(collision_src, "setup.py"), "w") as fp:
+        fp.write("from setuptools import setup; setup()")
+
+    collisions_pex = os.path.join(str(tmpdir), "collisions.pex")
+    run_pex_command(
+        args=[
+            pex_bdist,
+            collision_src,
+            "-o",
+            collisions_pex,
+            "--pex-root",
+            pex_root,
+            "--runtime-pex-root",
+            pex_root,
+        ]
+    ).assert_success()
+
+    venv_dir = os.path.join(str(tmpdir), "collisions.venv")
+    result = run_pex_tools(collisions_pex, "venv", venv_dir)
+    result.assert_failure()
+    assert (
+        "CollisionError: Encountered collision building venv at {venv_dir} "
+        "from {pex}:\n"
+        "1. {venv_dir}/bin/pex was provided by:".format(venv_dir=venv_dir, pex=collisions_pex)
+    ) in result.error
+
+    result = run_pex_tools(collisions_pex, "venv", "--collisions-ok", "--force", venv_dir)
+    result.assert_success()
+    assert (
+        "PEXWarning: Encountered collision building venv at {venv_dir} from {pex}:\n"
+        "1. {venv_dir}/bin/pex was provided by:".format(venv_dir=venv_dir, pex=collisions_pex)
+    ) in result.error
+    assert 42 == subprocess.call(args=[Virtualenv(venv_dir=venv_dir).bin_path("pex")])
+
+
+def test_collisions_mergeable_issue_1570(tmpdir):
+    # type: (Any) -> None
+
+    pex = os.path.join(str(tmpdir), "pex")
+    run_pex_command(args=["opencensus==0.8.0", "opencensus_context==0.1.2", "-o", pex])
+
+    venv_dir = os.path.join(str(tmpdir), "venv")
+    run_pex_tools(pex, "venv", venv_dir).assert_success()
+
+    venv = Virtualenv(venv_dir=venv_dir)
+    _, stdout, _ = venv.interpreter.execute(
+        args=[
+            "-c",
+            dedent(
+                """\
+                from __future__ import print_function
+
+                import opencensus
+                import opencensus.common
+
+
+                print(opencensus.__file__)
+                print(opencensus.common.__file__)
+                """
+            ),
+        ]
+    )
+    assert [
+        os.path.join(venv.site_packages_dir, "opencensus", "__init__.py"),
+        os.path.join(venv.site_packages_dir, "opencensus", "common", "__init__.py"),
+    ] == stdout.splitlines()