Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I just discovered that Matplotlib 3.0 has been released. As the 2.0 release is still fresh in my memory (well, it's about one and a half year ago) and the fact that we are still just at 2.2, I wonder what made the developers opt for an increase to the major version number? The docs does not seem to hint at an explanation.
Edit
Since this question has been flagged as being "primarily opinion-based", let me add that I would like a link to some official explanation by the Matplotlib developers.
It is true that matplotlib 3.0 does not provide many new features that would usually require a major version number change.
The main point of version 3.0 is that it is python 3 only.
Dropping python 2.7 constitutes an API change and thus required a major version bump. While for people using python 3 anyways this API change may seem rather minor, people using python 2 will care a lot.
The step to go to python 3 only allowed the developpers to get rid of all the code that was needed to maintain compatibility between python 2 and python 3. Most of this is not seen from the outside, but cleaning up the codebase will now allow to move forward with new features a bit quicker. Also bugfixing is simplified a good bit, since no workarounds for python2/3 are needed any more.
More new features are to expected for the first minor version 3.1.
To summarize we now have
matplotlib 2.2.x which still supports python 2.7 and which will receive bugfixes until the official python 2 development ends in 2020, but which will not contain any more new features.
matplotlib 3.x which will be continuously developped from now on and supports python 3.5 or greater.
Because the question asks for some "official" statement, this mailing list entry initiated the versioning, which was then resceduled in this message. (note that in contrast to those, python 3.5 is still supported in matplotlib 3.0)
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I'm starting a new open-source software in Python, and I'm wondering whether I should use Python 2.x or Python 3.x.
It will include a heavy GUI, complex scientific algorithms dealing with large amounts of data. I'll need at least Numpy, Scipy, PyQT4, PyOpenGL, h5py, optionaly Matplotlib. It should first be released in 2013, with updates and extensions during the next few years.
It will be used by scientists that do not necessarily have a background in computer science, on a wide variety of computers (Linux, Windows, Mac...). Some machines may be old.
If I choose Python 3.x, I fear that the software and the third-party libraries may be more complicated to install, especially on old systems where Python 2.x is already installed. It would be better if RPM-like packages (or Windows installers) for Python and the external libraries were available on most systems, such that one doesn't need to compile everything. Also, I don't know if the 3.x branch is mature enough.
If I choose Python 2.x, I may need to port the software to Python 3.x in the near future if the 2.x branch becomes deprecated (when will that happen?).
What would be the best option?
UPDATE: My original answer was given in 2012. However, now, years later, the answer should and must be Python 3.
This wiki discusses exactly your question: Should I use Python 2 or Python 3 for my development activity?
This is a very large subjective part to this question which depends on exactly your specific situation and constraints.
IMO, however, if you can't be sure that all 3rd party libraries you need will work with Python v3.x I would stick with Python 2.x but try to write code to be as compatible with Python 3.x as much possible (e.g., print() etc) so that if you ever need or want to migrate to v3 your work won't be so challenging. And of course there are documentation and tools on moving from version 2 to 3. And this on porting v2 code to v3.
This will especially be the case on systems where you don't have control or can't install newer versions of Python or customize the installation of 3rd party software/libraries.
Given that your software will be run on a wide variety of systems (Linux, Windows, Mac ..) and by a number of different users I still think that v2 is more of a common denominator these days.
So, short-attention-span summary: Use version 2.x but perpare your code for v3.x
Finally, if you put this search string "[python] version 3 or 2" into the SO search box, you'll find a number of related posts:
Python 3. (The answer to this question has changed!)
Python 2 is for legacy projects. New projects should lean towards Python 3.
The reason for this is that Python 3 (now 3.6) is roughly getting a new release each year. It has also been stable for many years (is in its tenth release year!). In contrast, Python 2 (still 2.7) has changed little in the last several years and will continue to grow stagnant.
For more information:
https://wiki.python.org/moin/Python2orPython3/
I agree with Levon.
With those requirements, I wouldn't risk starting in Python3 yet, but you should write your code taking as many of Python3 changes into consideration as possible.
See this question Writing Python 2.7 code that is as close to Python 3.x syntax as possible as it might help you with some imports and standards that you can use to make your code as future-proof as possible.
Also, if you're running in a variety of systems, you'd need to either distribute your version of python bundled in the application, or trust the installation of the user. Most OS's (non-windows), come with a 2.x flavor of Python installed, and it's not trivial for a non-techie user to upgrade to 3.x without the possibility of breaking the system.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Although this could be downvoted as an opinion based issue, I suspect there is a concrete answer to this:
I want to create a future-proof django project.
I want to maintain the best coding standards
I do in fact require a diversity of other python modules for the apps I am creating
I am shooting for best performance
With that in mind, should I stick to python2.7 because of it's great support and use? Or would it be better to use python3 because it is the way of the future?
Django's official stance is, as long as your dependencies support Python 3, to use Python 3. Python 3 has and will continue to receive new features and improvements, including better performance.
Unless you need modules that would be hard to port to Python 3 (simple ones can often be fixed just by running the builtin 2to3 tool), there isn't any reason not to use Python 3.
If the Python modules required are available for Python 3.x, then I would go ahead with the latest stable release. If not, don't be afraid to use Python 2.7 since performance is great and many 3.x improvements have been backported.
However, take into account that sooner or later you'll have to migrate to Python 3.
I would stick to python 2.7. It is more commonly used, and has lots of support.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I am deciding whether to install python 3.4 or 2.7 on my home server running Ubuntu Server 14.04.2. I want to ensure that it has support from all the most used python libraries (scipy, numpy, requests, etc) but I am not sure how many of these packages fully support 3.4.
Do all 2.7 packages work on 3.4? If no, what are the differences between the two that causes this errors?
No, only packages specifically written to support both Python 2 and 3 will run on either.
It is possible to write polyglot Python, but this requires effort from the library author. Code written for Python 2.7 will not automatically work on Python 3.
Minor versions of python are mostly backwards compatible, however major versions do not maintain backwards compatibility. There are many libraries that work with both, but the language itself does not make that guarantee.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
The Python 2.x environment is stable and well-utilized by the current python community. And yet there is also a python 3.x branch of the language.
Why have we started a python 3.x branch? Does that imply that we are going to deprecate the 2.x branch anytime soon?
Can an experienced python developer explain the differences between the two and offer the best choice for a newbie who wants to learn the language?
If python 3.x is gonna be used longer, Are we solving the existing problems in 2.x like,
GIL issue for multithreading support?
Sorry if this question seems really basic but I would really like to learn!
Yes, the 2.x series is already deprecated in the sense that there will be no version 2.8 - 2.7 was the last 2.x major version.
The reason for the 2 to 3 change is because the 3.x branch makes certain backwards-incompatible changes (e.g. differentiating bytes and str, making print() a function rather than a statement, et cetera). This breaks compatibility with programs written for Python 2.x and as such requires special handling.
All new feature development is occurring in the 3.x branch. Some changes are being backported to 2.7.x versions, but that will only happen for so long - eventually, Python 2.7 will stop being maintained.
Python 3 breaks compatibility with Python 2.
This is pretty normal release management. When incompatible changes are introduced, previous major release branch is maintained for a period of time, sometimes a long one, alongside the new branch.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I have developed some internal tools at work using Python. I have been using version 2.5 (or 2.6/2.7) for that and my personal projects as they would work fine with Django and GAE. My question is - should I be switching to version 3 or shall I wait and continue to work with 2.5/2.6/2.7. How stable is 3.0 as compared to 2.x? And what is the switching curve? Thanks.
Python 3 isn't supported by Django and quite a few other notable projects. Although Python 3 (current version is 3.2.1 IIRC) is plenty stable, that's not the issues. The real issue is adoption and library support, and Python 3 does not have enough of either yet. I don't know of anyone using it in production.
The learning curve for switching is pretty small. You can pretty much learn everything you need from What's New in Python 3, and most porting of code is pretty trivial.
I would not recommend that you switch anything that you use in production or professionally to Python 3. For your personal projects, it's okay to use Python 3 as long as the libraries you are using support it (for example, a Django project would not be able to use Python 3). Likewise for AppEngine; for that, you'll have to stick to Python 2.5.
So, in short, you can play around with Python 3, but it's not wise to use it at work because it likely does not support the libraries that you need, and it's not widely installed like Python 2.x is. I'd start thinking about Python 3 and familiarize yourself with it, but don't switch just yet.
You may also be interested in Should I Choose Python 2 or 3.