You should absolutely ask in person. Asking by email is too cowardly and can make you appear immature. Be straightforward when you do ask, and give them an out. Tell them that if they don't feel comfortable writing the letters for you, that you would prefer they be honest about it. It's much better to be rejected than to have someone write a lukewarm letter about you. Good luck.