Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

So, I'll ask the noob question that has previously been getting asked to death but there's finally new reason to ask once more: someone who's had little to no prior experience with Django, and still is very much a novice with Python -- do you suggest they start using Django with Python 3 or 2?


Python 2

I really, really wanted to say to you Python 3, because:

- It is better (it fixes some annoyances)

- Django is working really great with it

But some things (that Django uses, but are not Django) are not working yet. Things like MySQL adaptors, South, etc

Or maybe go with Python 3 and wait for the issues to be fixed, they probably will, soon enough


The Python 2 v 3 conundrum seems to have been going on for an eternity. It must be putting off new adopters in their droves. For a start, you have to make an important decision about which flavor to install and how to get started right at the beginning, with no canonical right answer to the dilemma. Do the great and the good in the Python community realize how damaging this is, and how such a thing should never ever be allowed to happen again ?


How do you propose this be implemented? By abandoning Python 3, or shooting the dissenters who still insist on Python 2?


I have no idea what to do about 2 v 3 now. The grandparent is a genuine question, and my perspective is as a casual sometime Python user rather than a serious Python user. I am personally frustrated by the problem every time I'm tempted to get serious about Python. I'd love to know whether the key Python people acknowledge the problem in the way I've framed it and whether they have resolved to avoid something similar happening again in the future once this issue (finally) works itself out one way or another.


Are packages not updating because it's a lot of work, or because updating will break backwards-compatibility?


A little bit of both

There are ways to write software that's compatible with both Python 2 and 3 (using six for example: http://pythonhosted.org/six/)

But I guess it's mostly developers not having the time to update (it's easier if you kept it updated and not using some old constructs)


The tipping point is getting closer but I would still recommend Python 2.X for the time being, primarily for third party support.


Python 3 support in Django 1.5 is experimental. I would wait until Django 1.6 is launched or there are well-known, well-working examples of Python 3 implementations of Django on high traffic sites.


FWIW, that "experimental" label doesn't quite mean that 1.5 isn't ready for prime-time; it's more about setting community expectations. Please see my reply elsewhere in this thread (https://news.ycombinator.com/item?id=5289006) for more details.

ETA: That said, the advice to stick to Py2 right now is probably good. There's still some key missing 3rd party packages, so you'll generally be happier as a Py2 user right now.


Alas, I replied before your post. I agree with you completely.

I'm really looking forward to migrating a few projects up to Python 3 and Django 1.5. It's going to be awesome!


I have been running Django 1.5 on Python 3.3 since 1.5c1 - ran into zero problems. It is solid...

but... a lot of packages are not ready for 3 yet. So it depends how far you want to go.. Playing around by yourself? I'd go with Python 3... if you need to leverage a lot of the packages you'll need to drop down to 2.7


I would say 2 because every package out there works with it, not the case with 3 still. So it will be easier for you to follow docs and tutorials.

Plus, 2 is not going away in near future, and you'll be able to pick up 3 easily after that


i'd say that if you want to learn python, go with 3. if you want to build something on third party libraries while learning python at the same time, start with 2.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: