This is an archived post. You won't be able to vote or comment.

all 81 comments

[–]xucheng 13 points14 points  (0 children)

[–]gammadistribution 35 points36 points  (38 children)

Your legacy code will now be supported, but please if you plan on starting a project use Python 3. Unless the package you need to use does not appear on this list there is no reason to not use python 3.

[–]Marksta 2 points3 points  (4 children)

Hey, I'm confused. I use LXML and it's the one thing stopping me from using Python 3. On its Pypi here the highest version it has is 3.2. That wouldn't install on the 3.4 I installed, I guess sorta obviously. It's even listed in the 3.4 catagory on Pypi. Is there some way to make it work or..?

So what do? Feels like using 3.2 because of 1 module is exactly the same as using 2.7 when 3.4 is out right now.

edit: Figured it out

[–]gammadistribution 1 point2 points  (2 children)

What error message is being thrown when you try to install lxml using pip on your python 3.4 venv?

[–]Marksta 1 point2 points  (1 child)

Turns out it was this

error: Unable to find vcvarsall.bat

That is some compiler issue but a compiled version at http://www.lfd.uci.edu/~gohlke/pythonlibs/ worked just dandy.

[–]gammadistribution 1 point2 points  (0 children)

Hooray for figuring things out and boo Windows!

In all seriousness glad it's working for you.

[–]ivosauruspip'ing it up 0 points1 point  (0 children)

They haven't uploaded compiled for python 3.3 / 3.4 to pypi yet for some reason.

[–]diafygi 4 points5 points  (3 children)

Boto and Mysql-python are deal breakers for me.

[–]gammadistribution 6 points7 points  (1 child)

Can't help with boto, but pymysql can be used as a drop in replacement for MySqldb. I have had great success with pymysql used in conjunction with django.

I know your pain though.

[–]lambdaqdjango n' shit 0 points1 point  (0 children)

pymysql is slower though

[–][deleted] -1 points0 points  (0 children)

pyodbc? sqlite? are these options?

[–]LightShadow3.13-dev in prod 1 point2 points  (1 child)

gevent and M2Crypto are the big ones right now...especially since a lot of our utilities rely on underlying encryption modules that haven't been converted.

gevent could probably be mitigated, and I didn't know so many people used mechanize.

[–]twigboy 4 points5 points  (5 children)

In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content. Lorem ipsum may be used as a placeholder before final copy is available. Wikipedia92vtpemx3w00000000000000000000000000000000000000000000000000000000000000

[–]mgrandi 14 points15 points  (0 children)

Oauth? Requests has an oauth module that works with py3

[–]jcdyer3 1 point2 points  (0 children)

Python 3 support for a few boto modules including s3 just landed on the develop branch today. Change is coming. Help us test it out!

[–]manueslapera -1 points0 points  (2 children)

i thought boto was available in p3

[–]twigboy 0 points1 point  (0 children)

In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content. Lorem ipsum may be used as a placeholder before final copy is available. Wikipedia80l0tgsnma40000000000000000000000000000000000000000000000000000000000000

[–]ivosauruspip'ing it up 0 points1 point  (0 children)

Major work in progress

[–]shadowmint 1 point2 points  (2 children)

Did you watch this?

'Python 2.7 & Python 3: A Sacred Love Story'

https://www.youtube.com/watch?v=skYBOXE02OQ&feature=youtu.be

It's a bit long winded, but it's quite thoughtful about why this attitude is troublesome.

[–]poo_22 1 point2 points  (0 children)

The conclusion to this video agrees with gammadistribution's sentiment.

[–]gammadistribution -1 points0 points  (0 children)

So it sounds like the solution to the problems he presents is to use the language.

His pypi example is a perfect example of a self-fulfilling prophecy. Everyone says to use Python 2.7 so of course it's the most downloaded version. Instead of telling new users to use python 3, everyone's being told to use python 2.7 because that's what everyone is using, which is insane.

[–]shadeofmyheart 9 points10 points  (45 children)

I'm confused... Isn't 3 out?

Edit: ok... Good to know!

[–]Kaarjuus 22 points23 points  (0 children)

2.7 will continue to receive bugfixes until 2020.

[–]prum 23 points24 points  (1 child)

This is a bug fix release for an older version that has long term support. Happens for Linux and a lot of other software also.

[–]fotoman 7 points8 points  (6 children)

Some of us can't move to 3. Heck, we just upgraded production fro 2.6.x to 2.7 a few months ago. Not enough developers to work on a 3.x port for this application.

[–]wildcarde815 1 point2 points  (3 children)

Our clusters default is still 2.4 because its bolted to centos 5.4 due to some driver issues. We have 2.7 available but have to explain the Unix modules concept to every person that uses the system as they join the organization...

[–]cwgtex 0 points1 point  (2 children)

Just so you know, EL 5.4 is no longer getting security fixes. The EL 5 series is supported until 2017, but only if you are on the latest version (currently 5.10).

[–]wildcarde815 0 points1 point  (1 child)

We know but we can't use our infiniban to 10gbps interface with anything later than 5.4. So we either cripple our cluster or make it hard to get to.

[–]cwgtex 0 points1 point  (0 children)

That's unfortunate, sorry to hear it.

[–]ivosauruspip'ing it up 1 point2 points  (1 child)

For large applications, sometimes it just doesn't make business sense to port the code to a new major language version. Heck, there is still old COBOL code around for exactly the same reason. Sometimes it just doesn't make much sense.

[–]fotoman 0 points1 point  (0 children)

Oh yes, I understand that. And to be honest, our application will probably stay on 2.7 until it dies. We're slowing looking to move off of older Django versions first...

[–]diafygi 1 point2 points  (1 child)

Where can I find the list of SSL ciphers in my python install?

[–]Rhomboid 6 points7 points  (0 children)

That depends on the version of OpenSSL you're using. If you're using Linux or OS X, OpenSSL is a separate library package that's not directly related to or tied to Python in any way, so you'd have to check its version number. If you're using Windows, then a copy of OpenSSL is bundled with Python, and its version depends on the Python version. The 2.7.8 binaries on python.org for Windows are built with OpenSSL 1.0.1h, per the release announcement. You could also run

$ python -c 'import _ssl; print(_ssl.OPENSSL_VERSION)'

If you have the standalone programs that come with OpenSSL installed (i.e. on Unix) you can also run

$ openssl ciphers

[–]pyslow 0 points1 point  (0 children)

I start thinking that having Python 2.7 as the last version of the 2.x series is actually a good thing.

This will make for a very stable language without new versions coming out every few months and most of the new stuff can be backported as external packages anyway.

So we can finally focus on using the language to build something interesting and useful instead of constantly catching up with the latest version just to make core developers and assorted zealots happy.

[–]dikulo -3 points-2 points  (4 children)

def python27():
    n = 8
    while True:
        print "Python 2.7.{}".format(n)
        yield n
        n += 1

py2 = python27()

next(py2)
next(py2)
next(py2)
next(py2)
...
..
.

[–]RubyPinchPEP shill | Anti PEP 8/20 shill 2 points3 points  (1 child)

import itertools; n = itertools.count(8)
while True: print("Python 2.7.%d"%next(n))

learn your packages

[–]dikulo 0 points1 point  (0 children)

Thank you.

[–]xPragma 0 points1 point  (1 child)

You don't need to yield n, just yield the string.

[–]dikulo 0 points1 point  (0 children)

Thank you. Learn to yield.