There are over 300 replies in the discussion here (
About Python 3):
https://news.ycombinator.com/item?id=6985207 From what I've gleaned from that discussion, here are reasons why people aren't moving from Python2 to Python3. These are in no particular order, other than I repeat the two you mention first.
1. Lack of library support (as you indicated). I'll confess to not paying careful enough attention to know what specific libraries are desired.
2. Lack of a big enough carrot. I think this is what you mean when you mention the GIL. After all, Python2 also has the GIL, so its presence in Python3 is not a reason not to upgrade; but its absence might be a big enough motivation for some people to upgrade. Other wanted features that I recall include JIT compilation and tail call optimization; but I probably didn't pay enough attention to specifics here, either.
3. A claim that Python3 is inferior for interactive use. One complaint is that print is no longer a statement, but I can't help but wonder if some people don't realize that if a variable or expression is entered in the REPL it is automatically printed (the P in REPL). The prevalence of iterators over lists is also cited in this space.
4. Byte strings don't work well for those who need them. The Mercurial folks had something interesting to say about this, but others had complaints too. Sometimes little things don't work: one poster mentioned that byte strings can't be used as a key to a shelve object, element selection can't be combined with concatenation, etc.
5. The mismatch between Unicode strings in Python3 and C strings in Unix-like operating systems. This one is the one I care about and is thus the direct answer to your question.
6. What I might call petty complaints, but won't lest people call my complaints petty: lack of print statement (I don't get it, but it was very popular), true division, etc.