raycast/bullet force
This code does way too much:


When running your game and you have custom Python code ALWAYS have a console window open, to see if there are errors!
import only once. There is no need to import an already imported (sub)module. 
This code wants to enable the system mouse cursor. This has nothing to do with what you want to achieve.  Remove that (it is incorrect syntax anyway).
def main() serves no purpose. It disrupts the reading flow as it forces a reader to jump from top to bottom and back while reading your code [Imagine you read a novel that way]. The name "main" does not serve any information. Better leave the code outside of the function or give it a name that tells what the code is supposed to do. As it is the only function in your script ... the script name should do that already.
Be careful with attribute names: sensor is not the same as sensors
Be careful with syntax. Function names are followed by () rather than []
Try to isolate debug code (drawing a line) from business code (applying a force). Otherwise it makes the code unnecessary complex. [If drawing a line is the business you forget to tell it above]


This leaves the code with:

import bge

controller = bge.logic.getCurrentController()

hit = controller.sensors["ray"]
mouse = controller.sensors["mouse"]

if hit.positive and mouse.positive:
    strength = 1
    force = hit.rayDirection * strength
    hit.hitObject.applyForce(force)


Unfortunately you did not specify what force should be applied to. You can modify the line force = to apply whatever force you like. The above snippet is just an example.
Without more information there is not much to provide.