One way to deal with this is at the variation level. You can decorate your favourite variation scheme with a decorator that remaps the invalid individuals to a valid domain.
There are multiple ways to efficiently handle numerical constraints when using evolutionary algorithms. I recommend you the following paper by Coello Coello which is an extensive survey on the different methods that can be used. The DEAP documentation has some code examples.
Carlos A Coello Coello, Theoretical and numerical constraint-handling techniques used with evolutionary algorithms: a survey of the state of the art, Computer Methods in Applied Mechanics and Engineering, Volume 191, Issues 11–12, 4 January 2002, Pages 1245-1287, ISSN 0045-7825, http://dx.doi.org/10.1016/S0045-7825(01)00323-1. http://www.sciencedirect.com/science/article/pii/S0045782501003231
Note that the consequences of a remapping should be taken in account as the crossover and mutation should transfer the genetic material from parent to offsprings. If your mapping shuffles too much the values, the result can be more or less a random search. Maybe you should try to define problem specific operators that produce less invalid individuals.
Also, Note that I'm a DEAP developer and the answer can also be found on the mailing list.