[7665698] | 1 | """ |
---|
| 2 | Checking and reinstalling the external packages |
---|
| 3 | """ |
---|
[725de411] | 4 | from __future__ import print_function |
---|
| 5 | |
---|
[7665698] | 6 | import sys |
---|
[b441081] | 7 | |
---|
[b52f47f] | 8 | # Fix for error: hash-collision-3-both-1-and-1/ |
---|
| 9 | # See http://jaredforsyth.com/blog/2010/apr/28/accessinit-hash-collision-3-both-1-and-1/ |
---|
[96e151f] | 10 | try: |
---|
| 11 | import PIL.Image |
---|
| 12 | except ImportError: |
---|
| 13 | pass |
---|
| 14 | else: |
---|
| 15 | sys.modules['Image'] = PIL.Image |
---|
| 16 | |
---|
[b52f47f] | 17 | |
---|
[9939b16] | 18 | common_required_package_list = { |
---|
[725de411] | 19 | 'setuptools': {'version': '0.6c11', 'import_name': 'setuptools', 'test': '__version__'}, |
---|
| 20 | 'pyparsing': {'version': '1.5.5', 'import_name': 'pyparsing', 'test': '__version__'}, |
---|
| 21 | 'html5lib': {'version': '0.95', 'import_name': 'html5lib', 'test': '__version__'}, |
---|
| 22 | 'reportlab': {'version': '2.5', 'import_name': 'reportlab', 'test': 'Version'}, |
---|
| 23 | 'h5py': {'version': '2.5', 'import_name': 'h5py', 'test': '__version__'}, |
---|
| 24 | 'lxml': {'version': '2.3', 'import_name': 'lxml.etree', 'test': 'LXML_VERSION'}, |
---|
| 25 | 'PIL': {'version': '1.1.7', 'import_name': 'Image', 'test': 'VERSION'}, |
---|
| 26 | 'pylint': {'version': None, 'import_name': 'pylint', 'test': None}, |
---|
| 27 | 'periodictable': {'version': '1.3.0', 'import_name': 'periodictable', 'test': '__version__'}, |
---|
| 28 | 'bumps': {'version': '0.7.5.9', 'import_name': 'bumps', 'test': '__version__'}, |
---|
| 29 | 'numpy': {'version': '1.7.1', 'import_name': 'numpy', 'test': '__version__'}, |
---|
| 30 | 'scipy': {'version': '0.18.0', 'import_name': 'scipy', 'test': '__version__'}, |
---|
| 31 | 'wx': {'version': '2.8.12.1', 'import_name': 'wx', 'test': '__version__'}, |
---|
| 32 | 'matplotlib': {'version': '1.1.0', 'import_name': 'matplotlib', 'test': '__version__'}, |
---|
| 33 | 'xhtml2pdf': {'version': '3.0.33', 'import_name': 'xhtml2pdf', 'test': '__version__'}, |
---|
| 34 | 'sphinx': {'version': '1.2.1', 'import_name': 'sphinx', 'test': '__version__'}, |
---|
| 35 | 'unittest-xml-reporting': {'version': '1.10.0', 'import_name': 'xmlrunner', 'test': '__version__'}, |
---|
| 36 | 'pyopencl': {'version': '2015.1', 'import_name': 'pyopencl', 'test': 'VERSION_TEXT'}, |
---|
[9939b16] | 37 | } |
---|
| 38 | win_required_package_list = { |
---|
[725de411] | 39 | 'comtypes': {'version': '0.6.2', 'import_name': 'comtypes', 'test': '__version__'}, |
---|
| 40 | 'pywin': {'version': '217', 'import_name': 'pywin', 'test': '__version__'}, |
---|
| 41 | 'py2exe': {'version': '0.6.9', 'import_name': 'py2exe', 'test': '__version__'}, |
---|
[da8c5dc] | 42 | } |
---|
[9939b16] | 43 | mac_required_package_list = { |
---|
[725de411] | 44 | 'py2app': {'version': None, 'import_name': 'py2app', 'test': '__version__'}, |
---|
[da8c5dc] | 45 | } |
---|
| 46 | |
---|
[9939b16] | 47 | deprecated_package_list = { |
---|
[725de411] | 48 | 'pyPdf': {'version': '1.13', 'import_name': 'pyPdf', 'test': '__version__'}, |
---|
[9939b16] | 49 | } |
---|
[da8c5dc] | 50 | |
---|
[725de411] | 51 | print("Checking Required Package Versions....") |
---|
| 52 | print("") |
---|
| 53 | print("Common Packages") |
---|
| 54 | |
---|
| 55 | for package_name, test_vals in common_required_package_list.items(): |
---|
[7665698] | 56 | try: |
---|
[725de411] | 57 | i = __import__(test_vals['import_name'], fromlist=['']) |
---|
[da8c5dc] | 58 | if test_vals['test'] == None: |
---|
[725de411] | 59 | print("%s Installed (Unknown version)" % package_name) |
---|
[da8c5dc] | 60 | elif package_name == 'lxml': |
---|
[725de411] | 61 | verstring = str(getattr(i, 'LXML_VERSION')) |
---|
| 62 | print("%s Version Installed: %s"% (package_name, verstring.replace(', ', '.').lstrip('(').rstrip(')'))) |
---|
[da8c5dc] | 63 | else: |
---|
[725de411] | 64 | print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test']))) |
---|
| 65 | except ImportError: |
---|
| 66 | print('%s NOT INSTALLED'% package_name) |
---|
[da8c5dc] | 67 | |
---|
| 68 | if sys.platform == 'win32': |
---|
[725de411] | 69 | print("") |
---|
| 70 | print("Windows Specific Packages:") |
---|
| 71 | for package_name, test_vals in win_required_package_list.items(): |
---|
[da8c5dc] | 72 | try: |
---|
[443a487] | 73 | if package_name == "pywin": |
---|
| 74 | import win32api |
---|
[725de411] | 75 | fixed_file_info = win32api.GetFileVersionInfo(win32api.__file__, '\\') |
---|
| 76 | print("%s Version Installed: %s"% (package_name, fixed_file_info['FileVersionLS'] >> 16)) |
---|
[443a487] | 77 | else: |
---|
[725de411] | 78 | i = __import__(test_vals['import_name'], fromlist=['']) |
---|
| 79 | print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test']))) |
---|
| 80 | except ImportError: |
---|
| 81 | print('%s NOT INSTALLED'% package_name) |
---|
[da8c5dc] | 82 | |
---|
| 83 | if sys.platform == 'darwin': |
---|
[725de411] | 84 | print("") |
---|
| 85 | print("MacOS Specific Packages:") |
---|
| 86 | for package_name, test_vals in mac_required_package_list.items(): |
---|
[da8c5dc] | 87 | try: |
---|
[725de411] | 88 | i = __import__(test_vals['import_name'], fromlist=['']) |
---|
| 89 | print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test']))) |
---|
| 90 | except ImportError: |
---|
| 91 | print('%s NOT INSTALLED'% package_name) |
---|
[da8c5dc] | 92 | |
---|
| 93 | |
---|
[725de411] | 94 | print("") |
---|
| 95 | print("Deprecated Packages") |
---|
| 96 | print("You can remove these unless you need them for other reasons!") |
---|
| 97 | for package_name, test_vals in deprecated_package_list.items(): |
---|
[131576f] | 98 | try: |
---|
[725de411] | 99 | i = __import__(test_vals['import_name'], fromlist=['']) |
---|
[da8c5dc] | 100 | if package_name == 'pyPdf': |
---|
[725de411] | 101 | # pyPdf doesn't have the version number internally |
---|
| 102 | print('pyPDF Installed (Version unknown)') |
---|
[da8c5dc] | 103 | else: |
---|
[725de411] | 104 | print("%s Version Installed: %s"% (package_name, getattr(i, test_vals['test']))) |
---|
| 105 | except ImportError: |
---|
| 106 | print('%s NOT INSTALLED'% package_name) |
---|