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