Se encuentra en lugares rocosos en bosques secos, a una altitud de 100-1900 msnm, en México, Mesoamérica, Colombia, Venezuela, Ecuador, Perú y Bolivia.