Bonjour,
Il y a effectivement un import inutile (c'est pas beau le copier/coller bêtement

) et un gros méli-mélo dans l'ouverture du port série !
Pour le problème du "ça marche avec le serial monitor / ça marche plus avec le script" c'est à mon avis un problème de reset.
De base PySerial ne fait aucun reset du port série, il faut le faire à la main.
Exemple de script python + arduino :
http://skyduino.wordpress.com/2012/07/05/arduino-light-painting-assiste-par-ordinateur-version-2/Ps: la fonction readline() est bloquante par défaut.
Il faut juste configurer le timeout à l'ouverture du port série (voir mon exemple).