Commit 1feffdc3433c30d7a2cc567ae9fbb4a1abdf40c2
1 parent
35ac1dbc
oleobj: fixed absolute imports (issue #141)
Showing
2 changed files
with
18 additions
and
5 deletions
oletools/oleobj.py
| ... | ... | @@ -15,7 +15,7 @@ http://www.decalage.info/python/oletools |
| 15 | 15 | |
| 16 | 16 | # === LICENSE ================================================================== |
| 17 | 17 | |
| 18 | -# oleobj is copyright (c) 2015-2016 Philippe Lagadec (http://www.decalage.info) | |
| 18 | +# oleobj is copyright (c) 2015-2017 Philippe Lagadec (http://www.decalage.info) | |
| 19 | 19 | # All rights reserved. |
| 20 | 20 | # |
| 21 | 21 | # Redistribution and use in source and binary forms, with or without modification, |
| ... | ... | @@ -47,8 +47,9 @@ http://www.decalage.info/python/oletools |
| 47 | 47 | # 2016-07-19 PL: - fixed Python 2.6-7 support |
| 48 | 48 | # 2016-11-17 v0.51 PL: - fixed OLE native object extraction |
| 49 | 49 | # 2016-11-18 PL: - added main for setup.py entry point |
| 50 | +# 2017-05-03 PL: - fixed absolute imports (issue #141) | |
| 50 | 51 | |
| 51 | -__version__ = '0.51' | |
| 52 | +__version__ = '0.51dev7' | |
| 52 | 53 | |
| 53 | 54 | #------------------------------------------------------------------------------ |
| 54 | 55 | # TODO: |
| ... | ... | @@ -70,8 +71,20 @@ __version__ = '0.51' |
| 70 | 71 | |
| 71 | 72 | import logging, struct, optparse, os, re, sys |
| 72 | 73 | |
| 73 | -from .thirdparty.olefile import olefile | |
| 74 | -from .thirdparty.xglob import xglob | |
| 74 | +# IMPORTANT: it should be possible to run oletools directly as scripts | |
| 75 | +# in any directory without installing them with pip or setup.py. | |
| 76 | +# In that case, relative imports are NOT usable. | |
| 77 | +# And to enable Python 2+3 compatibility, we need to use absolute imports, | |
| 78 | +# so we add the oletools parent folder to sys.path (absolute+normalized path): | |
| 79 | +_thismodule_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__))) | |
| 80 | +# print('_thismodule_dir = %r' % _thismodule_dir) | |
| 81 | +_parent_dir = os.path.normpath(os.path.join(_thismodule_dir, '..')) | |
| 82 | +# print('_parent_dir = %r' % _thirdparty_dir) | |
| 83 | +if not _parent_dir in sys.path: | |
| 84 | + sys.path.insert(0, _parent_dir) | |
| 85 | + | |
| 86 | +from oletools.thirdparty.olefile import olefile | |
| 87 | +from oletools.thirdparty.xglob import xglob | |
| 75 | 88 | |
| 76 | 89 | # === LOGGING ================================================================= |
| 77 | 90 | ... | ... |
setup.py
| ... | ... | @@ -41,7 +41,7 @@ import os, fnmatch |
| 41 | 41 | #--- METADATA ----------------------------------------------------------------- |
| 42 | 42 | |
| 43 | 43 | name = "oletools" |
| 44 | -version = '0.51dev6' | |
| 44 | +version = '0.51dev7' | |
| 45 | 45 | desc = "Python tools to analyze security characteristics of MS Office and OLE files (also called Structured Storage, Compound File Binary Format or Compound Document File Format), for Malware Analysis and Incident Response #DFIR" |
| 46 | 46 | long_desc = open('oletools/README.rst').read() |
| 47 | 47 | author = "Philippe Lagadec" | ... | ... |