DevEval: Evaluating Code Generation in Practical Software Projects