player.applyForce Not Working with Character Physics [BGE Python] EDIT (question is still valid though)
I discovered that the issue was not the code, it was the object. I had Character physics on my cube, and it needed to be Dynamic.

Still, I would like to know how to fix the issue, since I prefer Character physics.

So I'm going through a basic tutorial in which I need to apply forward momentum to a cube. Here's my Python script.

import bge


def main():

cont = bge.logic.getCurrentController()
player = cont.owner

# KEY EVENTS
key = bge.logic.keyboard
activekey = bge.logic.KX_INPUT_ACTIVE
releasedkey = bge.logic.KX_INPUT_JUST_RELEASED
_w = key.events[bge.events.WKEY]
_a = key.events[bge.events.AKEY]
_s = key.events[bge.events.SKEY]
_d = key.events[bge.events.DKEY]
_shft = key.events[bge.events.LEFTSHIFTKEY]
w = activekey == _w
a = activekey == _a
s = activekey == _s
d = activekey == _d
shft = activekey == _shft
wrel = releasedkey == _w
arel = releasedkey == _a
srel = releasedkey == _s
drel = releasedkey == _d
spd = .1
mmt = 100

if shft:
    spd = spd*2
if w:
    player.applyMovement((0, spd, 0), True)
if wrel:
        player.applyForce((10000,0,0), True)
if s:
    player.applyMovement((0, -spd, 0), True)
if a:
    player.applyMovement((-spd, 0, 0), True)
if d:
    player.applyMovement((spd, 0, 0), True)

main()


I'm focusing on this line:

if wrel:
    player.applyForce((10000, 0, 0), True)


Whenever I play this, my cube moves, but then stops instantly. I tested the wrel variable to make sure it worked by:    

A. using a print function and checking the command line (successful)
B. using an applyMovement function (successful)

But when I change applyMovement to applyForce, it yields nothing.

What am I doing wrong?
I tested your script and found that character physics don`t have mass attribute as rigid body and dynamic does, and to apply force the object need mass attribute to work. So you will need to work with rigid body or dynamic.