In the days before most people were literate, there were only two ways to pronounce a foreign place name – you either pronounced it more or less how the locals pronounced it, or you ignored their name and gave the place/river/mountain/whatever a name of your own.
This meant we said Paris as ‘parriss’ and Lyon as ‘lions’ (like more than one of the animals). This is because in early medieval French, Paris was pronounced in French as ‘parreess’, and Lyon as ‘lyonss’ (-y as a consonant, not a vowel). In the course of time, final -s disappeared from French pronunciation, but not from English (I’m talking 12th-13 Century here), but by this time, the names were so familiar to English speakers that they had become English words and started to develop according to English rules rather than French.
Taking these names separately, Paris, which sounds to the English as if it’s stressed at the end by the French, became stressed at the beginning in English because that’s the way we do things, and ‘parriss’ it’s remained ever since.
Lyon is more complicated: in English there are no words that begin with the combination of ‘l’ and ‘y’ unless the next vowel is ‘oo’ (spelt ‘u’ or ‘ew’ – ‘lewd’ is an example from British English, although American English says ‘lood’) and even here it’s losing ground, so what we hear is not ‘lyonss’ but ‘lee-onss’, and we stress it at the beginning, as with Paris. The changes don’t stop here, though. In French, not only did the final -s disappear from the pronunciation (and later from the spelling as well), but the -on at the end merged the nasality of the -n- with the vowel, giving the modern pronunciation (still in one syllable, IPA [ljõ]). This didn’t happen in English either, but because the first syllable was the stressed one, the second syllable weakened to the extent that the final -s became a -z sound (as in most English plurals), and the second vowel, the -o-, became the weak neutral vowel schwa (written in IPA with an upside down e). So now we had ‘lee-ŏnz’. At this point the Great Vowel Shift intervened. Over the course of a couple of centuries, all the long vowels in English, of which -ee- is one, changed their sound, and -ee- became, gradually, what it is today: the -eye- sound of the word … ‘eye’. So, Lyon (French) kept its old French spelling in English (Lyons) and its new pronunciation, identical to the animal’s, had a perfectly good pedigree. However, in the more mobile and better educated 20th century, the British started to travel more to France, and when they stopped in Lyon for a steack-frites on their way to the Riviera, they started to notice that the French don’t call their city ‘lions’, but they still couldn’t get it completely right, because they couldn’t cope with that consonant cluster at the beginning, so it has now become IPA [‘li-õ] – a sort of half-way house, nodding to the French, but now risking confusion with the other great French city Lille, because the dark ‘l’ at the end of Lille (in English, but not in French) can be mistaken for the attempt at a nasal vowel at the end of Lyon.