Commit cd61e4ff9d0089e037ef4f1b1c6f23d8562ea722
1 parent
458e9119
olevba: fixed absolute imports
Showing
1 changed file
with
22 additions
and
7 deletions
oletools/olevba.py
| ... | ... | @@ -190,8 +190,9 @@ from __future__ import print_function |
| 190 | 190 | # 2016-11-03 v0.51 PL: - added EnumDateFormats and EnumSystemLanguageGroupsW |
| 191 | 191 | # 2017-02-07 PL: - temporary fix for issue #132 |
| 192 | 192 | # - added keywords for Mac-specific macros (issue #130) |
| 193 | +# 2017-03-08 PL: - fixed absolute imports | |
| 193 | 194 | |
| 194 | -__version__ = '0.51dev1' | |
| 195 | +__version__ = '0.51dev2' | |
| 195 | 196 | |
| 196 | 197 | #------------------------------------------------------------------------------ |
| 197 | 198 | # TODO: |
| ... | ... | @@ -225,7 +226,9 @@ __version__ = '0.51dev1' |
| 225 | 226 | |
| 226 | 227 | #--- IMPORTS ------------------------------------------------------------------ |
| 227 | 228 | |
| 228 | -import sys, logging | |
| 229 | +import sys | |
| 230 | +import os | |
| 231 | +import logging | |
| 229 | 232 | import struct |
| 230 | 233 | import cStringIO |
| 231 | 234 | import math |
| ... | ... | @@ -256,15 +259,26 @@ except ImportError: |
| 256 | 259 | + "see http://codespeak.net/lxml " \ |
| 257 | 260 | + "or http://effbot.org/zone/element-index.htm") |
| 258 | 261 | |
| 259 | -from .thirdparty import olefile | |
| 260 | -from .thirdparty.prettytable import prettytable | |
| 261 | -from .thirdparty.xglob import xglob, PathNotFoundException | |
| 262 | -from .thirdparty.pyparsing.pyparsing import \ | |
| 262 | +# IMPORTANT: it should be possible to run oletools directly as scripts | |
| 263 | +# in any directory without installing them with pip or setup.py. | |
| 264 | +# In that case, relative imports are NOT usable. | |
| 265 | +# And to enable Python 2+3 compatibility, we need to use absolute imports, | |
| 266 | +# so we add the oletools parent folder to sys.path (absolute+normalized path): | |
| 267 | +_thismodule_dir = os.path.normpath(os.path.abspath(os.path.dirname(__file__))) | |
| 268 | +# print('_thismodule_dir = %r' % _thismodule_dir) | |
| 269 | +_parent_dir = os.path.normpath(os.path.join(_thismodule_dir, '..')) | |
| 270 | +# print('_parent_dir = %r' % _thirdparty_dir) | |
| 271 | +if not _parent_dir in sys.path: | |
| 272 | + pass #sys.path.insert(0, _parent_dir) | |
| 273 | +from oletools.thirdparty import olefile | |
| 274 | +from oletools.thirdparty.prettytable import prettytable | |
| 275 | +from oletools.thirdparty.xglob import xglob, PathNotFoundException | |
| 276 | +from oletools.thirdparty.pyparsing.pyparsing import \ | |
| 263 | 277 | CaselessKeyword, CaselessLiteral, Combine, Forward, Literal, \ |
| 264 | 278 | Optional, QuotedString,Regex, Suppress, Word, WordStart, \ |
| 265 | 279 | alphanums, alphas, hexnums,nums, opAssoc, srange, \ |
| 266 | 280 | infixNotation, ParserElement |
| 267 | -from . import ppt_parser | |
| 281 | +from oletools import ppt_parser | |
| 268 | 282 | |
| 269 | 283 | |
| 270 | 284 | # monkeypatch email to fix issue #32: |
| ... | ... | @@ -3275,6 +3289,7 @@ def main(): |
| 3275 | 3289 | |
| 3276 | 3290 | # Print help if no arguments are passed |
| 3277 | 3291 | if len(args) == 0: |
| 3292 | + print('olevba %s - http://decalage.info/python/oletools' % __version__) | |
| 3278 | 3293 | print(__doc__) |
| 3279 | 3294 | parser.print_help() |
| 3280 | 3295 | sys.exit(RETURN_WRONG_ARGS) | ... | ... |