Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I would like to develop an application for a group of people to use. I have decided to develop using python, but I am thinking of using python 2.X or python 3.X. If I use python 2.X, I need to upgrade it for the future... But it is more mature, and has many tools and libraries. If I develop using 3.X, I don't need to think of future integration, but currenttly it doesn't have many libraries, even a python to executable is not ready for all platforms.

Also, one of the considerations is that it is a brand new application, so I don't have the history burden to maintain the old libraries.

Any recommendation on this dilemma?

More information about this application:

  • Native application
  • Time for maintenance: 5 years+
  • Library/Tools must need: don't have idea, yet.
  • Must need feature that in 2.X: Convert to an executable for both Windows and Mac OS X
share|improve this question
2  
You say that Python 3.x doesn't have as many tools/libraries/executables as Python 2.x. BUT... does it have the tools/libraries/executables that you need for your project? –  FrustratedWithFormsDesigner Nov 22 '11 at 16:12
    
What will happen when Python 4.x comes out? Future integration should be considered on some level if this application is going to be used for a long time. –  JB King Nov 22 '11 at 16:17
    
Well, I need to convert to an executables, which can say it is an essential. –  Ted Wong Nov 22 '11 at 16:19

3 Answers 3

It really depends on what your application does, and what kinds of libraries you want to leverage. The biggest downside of python 3.x is the lack of library/framework support. If you are building a web application, there is going to be very little downside to using 2.x, and you will have a much wider array of frameworks and libraries to choose from. Here's a good article on python 2.x vs 3.x.

Some general considerations when choosing a language/platform/framework:

  1. lifespan of application. years? months? decades?
  2. what's the cost to upgrade? what's the maintenance cost if you don't? many applications will happily run python 2.x in their own virtualenv for the next 20 years if you need them to.
  3. What features of the language will your application take advantage of? many web applications will only use python in a fairly basic way, and it's more about the maintainability of the libraries you are using than the code you are writing.

hope this helps.

share|improve this answer

First off, latest and mature are NOT always contrasting.

For example, in Python's case, you can't say 2.x is "more mature" than 3.x -- on the contrary, in some respects 3.x is more mature -- better classes, better Unicode support and of course bug fixes.

On the other hand, campare Node.JS with Python Twisted -- and you can say that Twisted is more mature than Node.JS which is sizzling latest.

Now, what you should go with is more about what you can handle in terms of maintainability, than about 2.x/3.x.

If you know it'll be not much pain to upgrade your app to 3.x later, you can go with 2.x right now, and leverage the 2.x eco-system.

On the other hand, if you think it'll be a maintenance nightmare to upgrade the app to 3.x, and are OK with developing the missing libraries and tools yourself, by all means go with 3.x then.

share|improve this answer

Well, I know that if you need to make windows executables you may want to stick w/2.x since py2exe will be desirable.

See: http://www.py2exe.org/

There are other windows freezing tools, but the gurus I look up to swear by py2exe and it has always done right by me.

You may also want to consider the actual difficulty in porting things to new versions of python. For example, the current process (2.x to 3.x) isn't so bad and there are even tools that provide a degree of automation for such, like 2to3.

See: http://docs.python.org/release/3.0.1/library/2to3.html#to3-reference

You should also check out changes between major versions ("What's New" pages) of python and any other prospective APIs to get a feel for the potential scope of difference in revisions.

As for the matter of newer things being bigger/better, that may be true, but better to concern yourself with what is in the subset of all those improved items that you are, or would consider, using.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.