| # Expects two env variables: |
| # PYCHARM_ENGULF_SCRIPT = which script should be engulfed. |
| # PYCHARM_PREPEND_SYSPATH = which entries should be added to the beginning of sys.path; |
| # items must be separated by path separator. May be unset. |
| # |
| # Given script is loaded and compiled, then sys.path is prepended as requested. |
| # On win32, getpass is changed to insecure but working version. |
| # Then the compiled script evaluated, as if it were run by python interpreter itself. |
| # Works OK with debugger. |
| |
| import os |
| import sys |
| |
| target = os.getenv("PYCHARM_ENGULF_SCRIPT") |
| print("Running script through buildout: " + target) |
| |
| assert target, "PYCHARM_ENGULF_SCRIPT must be set" |
| |
| filepath = os.path.abspath(target) |
| f = None |
| try: |
| f = open(filepath, "r") |
| source = "\n".join((s.rstrip() for s in f.readlines())) |
| finally: |
| if f: |
| f.close() |
| |
| from fix_getpass import fixGetpass |
| fixGetpass() |
| |
| #prependable = os.getenv("PYCHARM_PREPEND_SYSPATH") |
| #if prependable: |
| # sys.path[0:0] = [x for x in prependable.split(os.path.pathsep)] |
| |
| # include engulfed's path, everyone expects this |
| our_path = os.path.dirname(filepath) |
| if our_path not in sys.path: |
| sys.path.append(our_path) |
| |
| compile(source, target, "exec") |
| exec(source) |
| |
| # here we come |