The only package I found that didn't work with our Python 3 infrastructure was Fabric, but that's really easy to spin out (and will be fixed soon).
There's really no reason to not use Python 3 for (almost) all new projects at this point. It's exciting! I expect engineers who're used to developing in Python 3 will start to feel embarrassed that they're still running 2, and we'll port over all of those internal codebases (like at Dropbox :P).
[0]: http://docs.ansible.com/ansible/faq.html#how-do-i-handle-pyt...
For me unicode was the reason to switch to 3, not everybody lives in an english-only world :-)
wxPython comes to mind... :-/ Also PyGame, although it seems that there are now development releases for 3.x.
PyGame has worked on Python 3 for ages. Looking at [2] suggests it's from at least since the start of 2012.
[1]: http://wxpython.org/Phoenix/docs/html/classic_vs_phoenix.htm...
[1]: http://comments.gmane.org/gmane.comp.python.wxpython/103221
Twisted and wxPython are a great combo and will keep me on 2.7 as long as they are not ported.
https://docs.python.org/3/library/asyncio.html
I had to build a simple LDAP proxy recently, looked at twisted and asyncio and went with asyncio/python3. For that use-case, it was a perfect choice.
PySide is Qt4.
GKT3 looks ugly outside Linux.
Tk looks obsolete everywhere.
wxPython is Python 2 and I think GTK2 on Linux.
Basically, there is no usable, modern cross-platform GUI toolkit for Python right now.
Besides, PySide is porting to Qt5 too.
The problem is the cost of Qt itself for commercial development - unless I'm misreading the Qt website I might choke and drown on the cost of a developer license for Qt ("1x Qt for Application Development ($350/Interval)") and (" This subscription is automatically invoiced at 1 months Intervals").
Maybe it's badly-written English confusing me, but that (and other info on their site) sounds suspiciously like "Developing commercially for Qt and being able to do maintenance releases requires a $350/month developer license." Oh, and their licensing FAQ specifically says that you CANNOT start on the LGPL version and change to the commercial license without prior permission from them.
Maybe it's just me, but if I'm going to be expected to spend $4200/year/developer (or "contact us" for a perpetual agreement), maybe I'd be better off spending a little money first checking out the other alternatives.
But I do and thousands of other people do as well. Today, the value-add is somewhere else, not in language bindings for GUI toolkits.
- Can't comply with GPL3 and make your code compatible with the license
- Can't afford to pay for a commercial license
- Can't use a different language, such as C++, which has alternate offers
Then the problem is on your side, because either your business model is wrong or you're simply being cheap. You're not entitled to a free GUI toolkit for no good reason.
For 350 GBP (=500 EUR), you can have Intellij Idea.
When you ask your boss for a budget for Nx500 (N=number of developers), it is a huge difference, if you ask that for language bindings for GUI toolkit, or IDE.
The language and GUI toolkits are both free, the glue between them is not, and that damages them both. How many commercial PyQt apps have you seen in the wild?
Exactly.
Imagine, if someone asked money for XAML for C#... or for JavaFX. What it would do with their adaptation in projects?
Not many because most people use Qt, not PyQt. It's just easier.
Is there any kind of concrete roadmap on this? All I've heard was basically "yeah, we want to move to Qt5 at some point in the future" back in 2013.
I'd love to have a decent GUI toolkit for Python I could use with Apache or MIT code (without having to isolate the GPL bits), but I was nervous about being stuck on Qt4, so I was never terribly sure about PySide.
Of course, it is possible to install multiple versions side-by-side, and edit the scripts so they all start with #!/usr/local/bin/python3 or something like that, but it is just another barrier of entry. Not to mention that then there are most likely a bunch of additional modules that have to be tracked down to get something to work.
(Actually, come to think of it, this really isn't a python specific issue, this is really a general plea that if you are making something that is geared toward sysadmins, make sure that there is an easy enough installation method available for at least the currently supported versions of RHEL/Centos, Ubuntu LTS, and Suse Enterprise).
There are a lot of enterprise systems that are still on COBOL, but that wouldn't make it any less ridiculous to say that you can't use Python if you are creating a project that you want to share with others.
In addition to what others said, if you write code for python 3 making it compatible with python2.7 is relatively painless task (from my own experience) due to Python 2.7 having py3 functionality back ported.
Regarding python 2.6 this was discontinued back in 2013, as far as I know all redhat versions that used 2.6 are no longer supported unless you're paying for extended support. So I'm not convinced it is a good excuse.
Also if you use Java for example and you want to use JDK7 or JDK8 it doesn't matter that RH distro uses old version you'll find a proper RPM (or build one) to use it.
These days, I have few reservations about starting new projects with Python 3. It has become my new default.
People make it look like those are two completely different languages, even though there are actually very minor differences. You'll realize it once you'll start using python 3. Also py3 is much easier to master for a novice because it is much more consistent and no longer has some special cases.
For example if you're dividing a number you no longer need to convert one variable to be float in order to get a decimal. There is no int and long types, just int etc.
When starting a new project from scratch, I see no reason NOT to use python 3. Maybe if a few libs you depend heavily on are still not ported.
Even in that case, though, it might be a good idea to start on Python 3. First because most libraries are already ported[1], and second, you could try porting that specific lib, or maybe running it as a separate service using python 2.
I guess the problem remains about maintaining big, Python 2-based programs.
[1] - https://python3wos.appspot.com/