1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#***********************************************************************
# This file is part of OpenMolcas. *
# *
# OpenMolcas is free software; you can redistribute it and/or modify *
# it under the terms of the GNU Lesser General Public License, v. 2.1. *
# OpenMolcas is distributed in the hope that it will be useful, but it *
# is provided "as is" and without any express or implied warranties. *
# For more details see the full text of the license in the file *
# LICENSE or in <http://www.gnu.org/licenses/>. *
# *
# Copyright (C) 2018,2019, Ignacio Fdez. Galván *
#***********************************************************************
import sys
# These modules should be available in any python installation
standard_modules = [
'__future__',
'argparse',
'ast',
'base64',
'binascii',
'builtins|future.builtins',
'codecs',
'contextlib',
'datetime',
'decimal',
'errno',
'glob',
'hashlib',
'io',
'json',
'operator',
'os',
'os.path',
'random',
're',
'resource',
'shlex',
'shutil',
'signal',
'stat',
'subprocess',
'sys',
'tempfile',
'textwrap',
'threading',
'types',
'zlib',
]
# These modules may have to be installed
modules = {
'pyparsing':[],
#'setuptools', (only used in pack.py)
}
if (sys.version_info.major < 3):
modules.update({
'six':['python_2_unicode_compatible'],
})
fail = []
try:
import importlib
except ImportError:
fail.append('importlib')
else:
for item in standard_modules + list(modules):
mods = item.split('|')
result = []
for m in mods:
try:
tmp = importlib.import_module(m)
result.append(True)
except ImportError:
result.append(False)
if (not any(result)):
fail.append(item)
continue
if item in modules:
for i in modules[item]:
if (i not in dir(tmp)):
fail.append('{}({})'.format(item, i))
if (fail):
print(' '.join(fail))
sys.exit(len(fail))
|