The only way to do arbitrary jumps of this sort is in CPython, and is an implementation detail by the name of sys.settrace.
Here's a method, taken from the humorous goto April fools module, that lets me jump to (seemingly) arbitrary lines:
import sys
import inspect
_line_number = None
_frame = None
def jump_to(line_number, frame):
    global _line_number, _frame
    print("Set jump to line", line_number, "in", inspect.getfile(frame))
    _frame = frame
    _line_number = line_number
def _trace(frame, event, arg):
    global _line_number, _frame
    try:
        if _line_number is not None:
            if inspect.getfile(_frame) == inspect.getfile(frame):
                print("Jumping to line", _line_number, "in", inspect.getfile(frame))
                frame.f_lineno = _line_number
                _line_number = None
    except ValueError as e:
        print(e)
    return _trace
def install():
    sys.settrace(_trace)
    frame = sys._getframe().f_back
    while frame:
        frame.f_trace = _trace
        frame = frame.f_back
If I run it like this:
import traceh
traceh.install()
import inspect
traceh.jump_to(10, inspect.currentframe())
print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
I get the exciting output:
Set jump to line 10 in tr.py
Jumping to line 10 in tr.py
4
5
6
Now we can embed that with sys.excepthook, surely?
...
def new_sys_excepthook(type, value, traceback):
    if type == NameError:
        jump_to(traceback.tb_lineno, traceback.tb_frame)
        traceback.tb_frame
        return
    sys.__excepthook__(type, value, traceback)
def install():
    sys.excepthook = new_sys_excepthook
    sys.settrace(_trace)
    ...
And to use it:
import traceh
traceh.install()
raise NameError
print(5)
print(6)
And the output...
Set jump to line 4 in tr.py
The problem is obvious: once sys.excepthook is called, the outer scope is gone so at no point does _trace get a chance to run in the original file!
What if we assume that has a solution, and go back to using jump_to for a moment?
import traceh
traceh.install()
import inspect
try:
    raise NameError
    print(1)
    print(2)
    print(3)
    print(4)
    print(5)
    print(6)
except:
    traceh.jump_to(10, inspect.currentframe())
This is immune to the problem we saw last time, because we're manually calling jump_to inside the file. Let's see:
Set jump to line 10 in tr.py
Jumping to line 10 in tr.py
can't jump into the middle of a block
Well damnit.
Idea credit goes heavily to the goto module by Richie Hindle.