Difference between revisions of "Python Resources"

From Simson Garfinkel
Jump to navigationJump to search
m
Line 1: Line 1:
I've reviewed these resources and highly recommend them. I periodically update this page, but it may be out of date.
==Learning Python==
==Learning Python==
I've reviewed these resources and highly recommend them.
You need to be able to run Python programs. You have three options:
 
# Although Python is pre-installed on many computers, you should download and install [https://www.anaconda.com/ the Anaconda Python distribution]. It has all of the packages you need.
# Alternatively, you can learn it entirely using web-based Jupyter notebooks.
 
===If you don't know how to program===
===If you don't know how to program===
If you have never programmed with Python before, you may want to start with DataCamp's Learn python by example:
If you have never programmed with Python before, you may want to start with DataCamp's Learn python by example:
* https://www.learnpython.org, powered by DataCamp. For example, look at the [https://www.learnpython.org/en/String_Formatting String Formatting] lesson
* https://www.learnpython.org, powered by DataCamp. For example, look at the [https://www.learnpython.org/en/String_Formatting String Formatting] lesson


If you have not programmed before, you may try:
I also recommend:  
* [https://www.diveinto.org/python3/ Dive Into Python 3] (book, online for free; a little dated.)
* [https://www.diveinto.org/python3/ Dive Into Python 3] (book, online for free; a little dated.)
* [https://wiki.python.org/moin/BeginnersGuide/NonProgrammers Python for Non-Programmers]
* [https://wiki.python.org/moin/BeginnersGuide/NonProgrammers Python for Non-Programmers]


===If you know how to program===
===If you know how to program===
If you know another programming language (e.g. C, C++, FORTRAN, APL, Java, etc.), you can learn Python in about 2 hours.
If you know another programming language (e.g. C, C++, FORTRAN, Java, etc.), you can learn Python in about 2 hours.


Start by reading the Python Tutorial:
Start by reading the Python Tutorial:
Line 63: Line 69:
* http://www.cc.gatech.edu/classes/AY2013/cs1301_summer/presentations/calico_graphics.pdf
* http://www.cc.gatech.edu/classes/AY2013/cs1301_summer/presentations/calico_graphics.pdf


===Games===
===Writing Games===
* http://www.pygame.org/ pygame - a Python game development system
* http://www.pygame.org/ pygame - a Python game development system
* [http://peak.telecommunity.com/DevCenter/EasyInstall PEAK Easy Install]
* [http://peak.telecommunity.com/DevCenter/EasyInstall PEAK Easy Install]
Line 88: Line 94:
* pyqt - Use PyQT5 (it's part of Anaconda)
* pyqt - Use PyQT5 (it's part of Anaconda)
* [http://www.fltk.org/ FLTK], the Fast Light Toolkit
* [http://www.fltk.org/ FLTK], the Fast Light Toolkit
However, I strongly recommend writing your python program as a web-based app (see next section)


==Building Web Applications==
==Building Web Applications==
Line 131: Line 140:


==Python Installation==
==Python Installation==
If you are using a Mac, you almost certainly want to ditch Apple's python implementation and instead install your own.
I now recommend the [https://www.anaconda.com/ Anaconda Python distribution], because it has almost everything that you need, and it's easy to add new modules.
If you want to write a Python program with a GUI that can be run on any system, you'll need to use  Tkinter (Python's Tcl/Tk bindings). If you want to actually enjoy what you are writing, you want to use PyQT5..


=Advanced Python=
=Advanced Python=

Revision as of 09:01, 25 April 2020

I've reviewed these resources and highly recommend them. I periodically update this page, but it may be out of date.

Learning Python

You need to be able to run Python programs. You have three options:

  1. Although Python is pre-installed on many computers, you should download and install the Anaconda Python distribution. It has all of the packages you need.
  2. Alternatively, you can learn it entirely using web-based Jupyter notebooks.

If you don't know how to program

If you have never programmed with Python before, you may want to start with DataCamp's Learn python by example:

I also recommend:

If you know how to program

If you know another programming language (e.g. C, C++, FORTRAN, Java, etc.), you can learn Python in about 2 hours.

Start by reading the Python Tutorial:

I then recommend reading the documentation:

Using Python

Recommended packages and tools for different tasks

Developer Tools

  • PyCharm
  • Jupyter Notebook

Numerical Data Processing

  • numpy - numeric analysis in python (needed for matplotlib)
  • pandas or SparkSQL
  • tabulate - create tables easily (but see my tytable replacement)

Date Data

String Formatting

Image Manipulation

  • Use Pillow, the Python2/3 fork of Python Image Library (PIL).

Fun examples:

Text Processing

See Text processing notes.

Graphing

Easy Graphics

Writing Games

Database Access

Python contains built-in support for SQLite3.

For using MySQL, you'll need a connector. There are many available.

Install MySQL connector on anaconda:

   conda install mysql-connector-python

Then you can:

   import mysql.connector as mysql
   c = mysql.connect(host=host,database=db,user=user,password=password)

I generally prefer PyMySQL, as it's pure-python and has fewer dependencies.

Python GUI Options

I need to write some programs that use GUI.

  • pyqt - Use PyQT5 (it's part of Anaconda)
  • FLTK, the Fast Light Toolkit

However, I strongly recommend writing your python program as a web-based app (see next section)


Building Web Applications

You basically have two options:

  • Write a CGI script (slow, but easy. Don't use for more than 1 request every 10 seconds)
  • Some sort of Web Server Gateway Interface (WSGI). Options include:
    • Bottle (easy, and the whole thing runs from a single file)
    • Flask (can run on Apache with Passenger, but needs its own domain name)
    • Writing your own (don't do this.)

The WSGI server needs to be run from a program that receives the Port80 connections. The two ways I've done this are:

  • mod_wsgi running within Apache. (This works surprisingly well and allows you to run bottle or flask side-by-side other systems)
  • CherryPy (Includes its own web server and will hand off to Bottle or Flas.)

For more information, see:

If you are using anything other CGI, you need some way to tell the web server to reload your python program. (You don't need to do this with CGI---it reloads Python and your program every time you serve another request. That's why it's so slow...)

To reload your program on Dreamhost with passenger:

   $ touch tmp/restart.txt         # reload your program

To reload your program with mod_wsgi:

   $ touch wsgi_app.py 

Using Passengers on Dreamhost:

Good Tutorials

Writing a full application with Apache, Bottle and MongoDB:

Python Installation

Advanced Python