Python: Rotate object according to vectors
You can use the rotation_difference method of the mathutils.Vector object to calculate the 3 axis angle difference between two vectors.

This function is used as follows:

# Calculate the angle between two vectors. Returns a Quaternion object.
vector1.rotation_difference( vector2 )


Here's some sample code that uses this function:

import bpy
from mathutils import Vector
from math import degrees

v0 = Vector(( 0,0,0 ))
v1 = Vector((-0.792312741279602, 0.6056182980537415, -0.0739390179514885))

rot = v1.rotation_difference( v0 ).to_euler()
print( [ degrees( a ) for a in rot ] )


Output is (angle rotation in each axis):

[ -77.31130736634618, -146.788879528308, -40.89379056097038 ]


Now if you want to rotate an object according to this rotation difference, all you need to do is to assign the value of rot to the object's rotation_euler property:

obj.rotation_euler = rot


Note: the image can be a bit misleading since the cube and corresponding empty's location is not the value of V1 at all. V1 represents the rotation / direction values only, with respect to the zero vector (V0).