GAC coding dicussion
October 11, 2017
Leslie Emery
Genetic Analysis Center
GAC coding dicussion
October 11, 2017
Why are there two versions of Python?
Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range.
Python 2.x is legacy, Python 3.x is the present and future of the language.
2017: some effort, most libraries, major awareness, debate is over
For an alternative perspective: Python 3 is killing Python
Most systems currently maintain python 2.7 and python 3.x simultaneously
03:34 PM emeryl@fisher ~ $ which python
/usr/bin/python
03:34 PM emeryl@fisher ~ $ which python2
/usr/bin/python2
03:34 PM emeryl@fisher ~ $ which python3
/usr/local/bin/python3
03:34 PM emeryl@fisher ~ $ ls -lhA /usr/local/bin/python*
lrwxrwxrwx 1 root root 35 Sep 10 2012 /usr/local/bin/python2.7 -> /usr/local/python-2.7/bin/python2.7
lrwxrwxrwx 1 root root 42 Sep 10 2012 /usr/local/bin/python2.7-config -> /usr/local/python-2.7/bin/python2.7-config
lrwxrwxrwx 1 root root 9 Sep 11 2012 /usr/local/bin/python3 -> python3.1
lrwxrwxrwx 1 root root 37 Sep 11 2012 /usr/local/bin/python3.1 -> /usr/local/python-3.1.2/bin/python3.1
lrwxrwxrwx 1 root root 44 Sep 11 2012 /usr/local/bin/python3.1-config -> /usr/local/python-3.1.2/bin/python3.1-config
lrwxrwxrwx 1 root root 35 Jan 4 2016 /usr/local/bin/python3.4 -> /usr/local/python-3.4/bin/python3.4
lrwxrwxrwx 1 root root 36 Jan 4 2016 /usr/local/bin/python3.4m -> /usr/local/python-3.4/bin/python3.4m
lrwxrwxrwx 1 root root 43 Jan 4 2016 /usr/local/bin/python3.4m-config -> /usr/local/python-3.4/bin/python3.4m-config
03:35 PM emeryl@fisher ~ $ ls -lhA /usr/bin/python*
-rwxr-xr-x 2 root root 8.9K May 22 2015 /usr/bin/python
lrwxrwxrwx 1 root root 6 Jun 29 2016 /usr/bin/python2 -> python
-rwxr-xr-x 2 root root 8.9K May 22 2015 /usr/bin/python2.6
-rwxr-xr-x 1 root root 1.4K May 22 2015 /usr/bin/python2.6-config
lrwxrwxrwx 1 root root 16 Jun 29 2016 /usr/bin/python-config -> python2.6-config
01:00 PM emeryl@gcc-mac-004 ~ $ /usr/bin/python2.6
Python 2.6.9 (unknown, Feb 7 2017, 00:08:08)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
12:58 PM emeryl@gcc-mac-004 ~ $ port select --summary
Name Selected Options
==== ======== =======
mysql mysql57 mysql57 none
pip pip34 none
python python34 python26-apple python27 python27-apple python34 python35 none
python2 python27 python26-apple python27 python27-apple none
python3 python34 python34 python35 none
virtualenv virtualenv34 virtualenv34 virtualenv35 none
12:58 PM emeryl@gcc-mac-004 ~ $ which python
/Users/emeryl/macports/bin/python
12:59 PM emeryl@gcc-mac-004 ~ $ which python2
/Users/emeryl/macports/bin/python2
12:59 PM emeryl@gcc-mac-004 ~ $ ls -lhA ~/macports/bin/python*
lrwxr-xr-x 1 emeryl staff 36B Jun 29 17:29 /Users/emeryl/macports/bin/python -> /Users/emeryl/macports/bin/python3.4
lrwxr-xr-x 1 emeryl staff 43B Jun 29 17:29 /Users/emeryl/macports/bin/python-config -> /Users/emeryl/macports/bin/python3.4-config
lrwxr-xr-x 1 emeryl staff 18B Oct 11 12:59 /Users/emeryl/macports/bin/python2 -> /usr/bin/python2.6
lrwxr-xr-x 1 emeryl staff 25B Oct 11 12:59 /Users/emeryl/macports/bin/python2-config -> /usr/bin/python2.6-config
lrwxr-xr-x 1 emeryl staff 85B Sep 27 09:57 /Users/emeryl/macports/bin/python2.7 -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x 1 emeryl staff 92B Sep 27 09:57 /Users/emeryl/macports/bin/python2.7-config -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
lrwxr-xr-x 1 emeryl staff 36B Sep 28 11:03 /Users/emeryl/macports/bin/python3 -> /Users/emeryl/macports/bin/python3.4
lrwxr-xr-x 1 emeryl staff 43B Sep 28 11:03 /Users/emeryl/macports/bin/python3-config -> /Users/emeryl/macports/bin/python3.4-config
lrwxr-xr-x 1 emeryl staff 85B Sep 27 15:23 /Users/emeryl/macports/bin/python3.4 -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4
lrwxr-xr-x 1 emeryl staff 92B Sep 27 15:23 /Users/emeryl/macports/bin/python3.4-config -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4-config
lrwxr-xr-x 1 emeryl staff 86B Sep 27 15:23 /Users/emeryl/macports/bin/python3.4m -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4m
lrwxr-xr-x 1 emeryl staff 93B Sep 27 15:23 /Users/emeryl/macports/bin/python3.4m-config -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4m-config
...
...
lrwxr-xr-x 1 emeryl staff 85B Sep 27 15:24 /Users/emeryl/macports/bin/python3.5 -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
lrwxr-xr-x 1 emeryl staff 92B Sep 27 15:24 /Users/emeryl/macports/bin/python3.5-config -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5-config
lrwxr-xr-x 1 emeryl staff 86B Sep 27 15:24 /Users/emeryl/macports/bin/python3.5m -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m
lrwxr-xr-x 1 emeryl staff 93B Sep 27 15:24 /Users/emeryl/macports/bin/python3.5m-config -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5m-config
lrwxr-xr-x 1 emeryl staff 37B Sep 28 11:03 /Users/emeryl/macports/bin/python3m -> /Users/emeryl/macports/bin/python3.4m
lrwxr-xr-x 1 emeryl staff 44B Sep 28 11:03 /Users/emeryl/macports/bin/python3m-config -> /Users/emeryl/macports/bin/python3.4m-config
lrwxr-xr-x 1 emeryl staff 19B Oct 11 12:59 /Users/emeryl/macports/bin/pythonw2 -> /usr/bin/pythonw2.6
lrwxr-xr-x 1 emeryl staff 86B Sep 27 09:57 /Users/emeryl/macports/bin/pythonw2.7 -> /Users/emeryl/macports/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
Any suggestions?
http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html
dict.iterkeys()
, dict.itervalues()
, and dict.iteritems()
are gonedict.keys()
, dict.values()
, and dict.items()
dict.keys()
, dict.values()
, and dict.items()
, and these views are similar to iterators, so the iterator methods have been removed2.x code can be a lot like 3.x code.
Should I use Python 2 or Python 3 for my development activity?
What should I learn as a beginner: python 2 or python 3?
The key differences between Python 2.7.x and Python 3.x with examples
Python 2 vs Python 3: Practical Considerations
Python 3 vs Python 2: it’s different this time
Python 2 vs Python 3: Which to Learn?
Python 3 in 2016
Results for “Which version of Python (2.x vs 3.x) do London Data Scientists use?”
Adopt Python 3
Python 2 or 3?
Python 3 Readiness
2013 usage survey