Commit abece8c536c25653697907f28754a39b252db730

Authored by decalage2
1 parent ab6a1e75

olemap: fixed absolute imports

Showing 1 changed file with 27 additions and 10 deletions
oletools/olemap.py
... ... @@ -13,7 +13,7 @@ http://www.decalage.info/python/oletools
13 13  
14 14 #=== LICENSE ==================================================================
15 15  
16   -# olemap is copyright (c) 2015-2016 Philippe Lagadec (http://www.decalage.info)
  16 +# olemap is copyright (c) 2015-2017 Philippe Lagadec (http://www.decalage.info)
17 17 # All rights reserved.
18 18 #
19 19 # Redistribution and use in source and binary forms, with or without modification,
... ... @@ -43,25 +43,33 @@ http://www.decalage.info/python/oletools
43 43 # 2016-01-13 v0.02 PL: - improved display with tablestream, added colors
44 44 # 2016-07-20 v0.50 SL: - added Python 3 support
45 45 # 2016-09-05 PL: - added main entry point for setup.py
  46 +# 2017-03-20 v0.51 PL: - fixed absolute imports
46 47  
47   -__version__ = '0.50'
  48 +__version__ = '0.51dev3'
48 49  
49 50 #------------------------------------------------------------------------------
50 51 # TODO:
51 52  
52 53 # === IMPORTS ================================================================
53 54  
54   -import sys
55   -from .thirdparty.olefile import olefile
56   -from .thirdparty.tablestream import tablestream
  55 +import sys, os
57 56  
  57 +# IMPORTANT: it should be possible to run oletools directly as scripts
  58 +# in any directory without installing them with pip or setup.py.
  59 +# In that case, relative imports are NOT usable.
  60 +# And to enable Python 2+3 compatibility, we need to use absolute imports,
  61 +# so we add the oletools parent folder to sys.path (absolute+normalized path):
  62 +_thismodule_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__)))
  63 +# print('_thismodule_dir = %r' % _thismodule_dir)
  64 +_parent_dir = os.path.normpath(os.path.join(_thismodule_dir, '..'))
  65 +# print('_parent_dir = %r' % _thirdparty_dir)
  66 +if not _parent_dir in sys.path:
  67 + sys.path.insert(0, _parent_dir)
58 68  
  69 +from oletools.thirdparty.olefile import olefile
  70 +from oletools.thirdparty.tablestream import tablestream
59 71  
60   -def sid_display(sid):
61   - if sid == olefile.NOSTREAM:
62   - return None
63   - else:
64   - return sid
  72 +# === CONSTANTS ==============================================================
65 73  
66 74 STORAGE_NAMES = {
67 75 olefile.STGTY_EMPTY: 'Empty',
... ... @@ -88,6 +96,15 @@ FAT_COLORS = {
88 96 }
89 97  
90 98  
  99 +# === FUNCTIONS ==============================================================
  100 +
  101 +def sid_display(sid):
  102 + if sid == olefile.NOSTREAM:
  103 + return None
  104 + else:
  105 + return sid
  106 +
  107 +
91 108 # === MAIN ===================================================================
92 109  
93 110 def main():
... ...