Commit 54ca41c809ce1c36072c25fef9524b69285c61c6

Authored by decalage2
1 parent 12653de9

olebrowse: fixed absolute imports (issue #141)

Showing 1 changed file with 22 additions and 6 deletions
oletools/olebrowse.py
@@ -12,7 +12,7 @@ olebrowse project website: http://www.decalage.info/python/olebrowse @@ -12,7 +12,7 @@ olebrowse project website: http://www.decalage.info/python/olebrowse
12 olebrowse is part of the python-oletools package: 12 olebrowse is part of the python-oletools package:
13 http://www.decalage.info/python/oletools 13 http://www.decalage.info/python/oletools
14 14
15 -olebrowse is copyright (c) 2012-2015, Philippe Lagadec (http://www.decalage.info) 15 +olebrowse is copyright (c) 2012-2017, Philippe Lagadec (http://www.decalage.info)
16 All rights reserved. 16 All rights reserved.
17 17
18 Redistribution and use in source and binary forms, with or without modification, 18 Redistribution and use in source and binary forms, with or without modification,
@@ -36,12 +36,13 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE @@ -36,12 +36,13 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 """ 37 """
38 38
39 -__version__ = '0.02'  
40 -  
41 #------------------------------------------------------------------------------ 39 #------------------------------------------------------------------------------
42 # CHANGELOG: 40 # CHANGELOG:
43 # 2012-09-17 v0.01 PL: - first version 41 # 2012-09-17 v0.01 PL: - first version
44 # 2014-11-29 v0.02 PL: - use olefile instead of OleFileIO_PL 42 # 2014-11-29 v0.02 PL: - use olefile instead of OleFileIO_PL
  43 +# 2017-04-26 v0.51 PL: - fixed absolute imports (issue #141)
  44 +
  45 +__version__ = '0.51'
45 46
46 #------------------------------------------------------------------------------ 47 #------------------------------------------------------------------------------
47 # TODO: 48 # TODO:
@@ -51,10 +52,25 @@ __version__ = '0.02' @@ -51,10 +52,25 @@ __version__ = '0.02'
51 # - for a stream, display info: size, path, etc 52 # - for a stream, display info: size, path, etc
52 # - stream info: magic, entropy, ... ? 53 # - stream info: magic, entropy, ... ?
53 54
  55 +# === IMPORTS ================================================================
  56 +
54 import optparse, sys, os 57 import optparse, sys, os
55 -from .thirdparty.easygui import easygui  
56 -from .thirdparty import olefile  
57 -from . import ezhexviewer 58 +
  59 +# IMPORTANT: it should be possible to run oletools directly as scripts
  60 +# in any directory without installing them with pip or setup.py.
  61 +# In that case, relative imports are NOT usable.
  62 +# And to enable Python 2+3 compatibility, we need to use absolute imports,
  63 +# so we add the oletools parent folder to sys.path (absolute+normalized path):
  64 +_thismodule_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__)))
  65 +# print('_thismodule_dir = %r' % _thismodule_dir)
  66 +_parent_dir = os.path.normpath(os.path.join(_thismodule_dir, '..'))
  67 +# print('_parent_dir = %r' % _thirdparty_dir)
  68 +if not _parent_dir in sys.path:
  69 + sys.path.insert(0, _parent_dir)
  70 +
  71 +from oletools.thirdparty.easygui import easygui
  72 +from oletools.thirdparty import olefile
  73 +from oletools import ezhexviewer
58 74
59 ABOUT = '~ About olebrowse' 75 ABOUT = '~ About olebrowse'
60 QUIT = '~ Quit' 76 QUIT = '~ Quit'