Actually, I've included the SmartyPants script with the zipfile. So there's no real need to have it "installed" in Python. As long as it's in the same directory as the script that imports it, all should be well. I try to keep everything as "stock" as possible (meaning not a lot of requirements for special modules needing to be installed).

Here's a new 'smarten' (quotes/mdash/ndash/hellip) plugin, should be an improvement on the smartyPants version.

Also has an apos_exceptions.txt file which you should edit and add/remove words you want that begin with an apostrophe, it's case SENSITIVE, so if a word could also be at beginning of a sentence include another line with that capitalised word, such as tis and Tis, one word on each line, WITHOUT the apostrophe.

There's a few usual ones in there already, but edit as you see fit.
One I deliberately left off was Cause as it could also be non apostophe'd.
as in the examples
"'Cause I said so!"
'Cause of death?'
whereas it's lower-cased version would usually be apostrophe'd

The mdash and ndash entities are converted from dashes, -- is ndash, and --- is mdash, if you want them the other way round you need to change the lines 56/57 in the smarten.py file, remove one of the three dashes from line 56 and add one to the two in line 57.

Edit:
If you don't want it to do any of the (m/n)dash or ellipsis entities, you can comment out the lines (add a # to beginning of the line) in the smarten.py file
30, 31, 32 (calculate extras for the entities)
42, (add pre tags to comments)
56, 57, 58 (convert the entities)
119 (remove the pre tags from comments)
Edit 2:
If you do the commenting out you will need to add

Here's a new version of the smarten plugin, contains a couple of fixes and the apos_exceptions.txt file is now dealt with differently, you can have more than one entry on each line and you can include the apostrophe or leave out it.

Any other problems or case-fixes please let me know.

Edit:
If you don't want it to do any of the (m/n)dash or ellipsis entities, you can comment out the following lines (add a # to beginning of the line) in the smarten.py file
31, 32, 33 and 53, 54, 55

Edit 2:
One fix already, change line 63 (of smarten.py) to following - it adds \b to the regex. If a single quote preceded a word which was also in apos_exceptions word, then it got changed to an apostrophe, when it shouldn't have done - should be an open quote.
e.g. ('im is in apos_exception.txt) 'important'

Just found another flub, when an n/mdash entity was at beginning or end of line, the entity was being changed, but the count wasn't getting added to (as the extras/offset check wasn't getting a match), so the tags went out of alignment with the text.

Hopefully this should be it. (famous last words...)

Edit:
If you don't want it to do any of the (m/n)dash or ellipsis entities, you can comment out the following lines (add a # to beginning of the line) in the smarten.py file
32, 33, 34, 35, 36 and 56, 57, 58

Edit 2:
Yep, spoke too soon.
Just updated it, missed removing a couple of characters in the ndash replace line.
If you've already downloaded this new version, can you change line 57 in smarten.py to:

@Smarten plugin...
Just found another problem, to do with the apos_exceptions part. Although it did seem to be working, I found that now it doesn't - even though I can't see why it did originally work.

Not even months are easy - 'The March Hare first appears in Carroll's Mad Hatter's Tea Party scene.' v 'The 44th Foot had to march through the snow.'; 'The endless wet days of May.' v 'The truth may hurt for a while...'; 'August winds are invariably cold.' v 'An august body of work.'