Difference between revisions of "Python Resources"

From Simson Garfinkel
Jump to navigationJump to search
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Python Source Code and Modules==
==For Learning Python==
* jupyter notebook
I've reviewed these resources and highly recommend them:
* Start with the [https://docs.python.org/3/ Official Python Documentation], including the tutorial
* [http://video.google.com/videoplay?docid=7760178035196894549 Advanced Python or Understanding Python], Thomas Wouters, Google Tech Talks, February 21, 2007
* [http://www.diveintopython3.net/ Dive Into Python 3] (book, online for free)
* [http://book.pythontips.com/en/latest/index.html Python Tips] (book, online for free)
* [https://wiki.python.org/moin/BeginnersGuide/NonProgrammers Python for Non-Programmers]
* https://www.learnpython.org, powered by DataCamp. For example, look at the [https://www.learnpython.org/en/String_Formatting String Formatting] lesson
* [https://github.com/google/styleguide/blob/gh-pages/pyguide.md Python Google Style Guide].


==Numerical Analysis==
==Data Representation==
===Numerical Datas===
* numpy - numeric analysis in python (needed for matplotlib)
* numpy - numeric analysis in python (needed for matplotlib)
* tabulate - create tables easily
* tabulate - create tables easily
* jupyter notebook


==Graphing==
===Date Data===
* [http://matplotlib.org/ matplotlib] - a handy system for plotting in python.
** [Short example of using matplotlib within jupyter]
* geopy - geocoding
* [http://labix.org/python-dateutil dateutil]  
* [http://labix.org/python-dateutil dateutil]  
* [http://pyx.sourceforge.net/ PyX] - A Python PS and PDF graphing package
* [http://www.pygame.org/ pygame] - a Python game development system
* [http://codespeak.net/icalendar/ iCalendar] package for Python
* [http://codespeak.net/icalendar/ iCalendar] package for Python
===String Formatting===
* https://pyformat.info
== Text Processing ==
See [[Text processing notes]].
==Graphing, Graphics and Games==
===Graphing===
* [http://matplotlib.org/ matplotlib] - a handy system for plotting in python. ([[Short example of using matplotlib within jupyter]])
* [https://altair-viz.github.io/index.html Altair: Declarative Visualization in Python]
* [https://github.com/geopy/geopy geopy] - geocoding for Python
* Seaborn. (See [https://www.datacamp.com/community/tutorials/seaborn-python-tutorial Datacamp Tutorial])
===Easy Graphics===
* Graphics.py: http://mcsp.wartburg.edu/zelle/python/graphics.py http://mcsp.wartburg.edu/zelle/python/ http://mcsp.wartburg.edu/zelle/python/graphics/graphics.pdf
* HTML graphics:  http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/graphics.html
* http://plotdevice.io/
* http://www.cc.gatech.edu/classes/AY2013/cs1301_summer/presentations/calico_graphics.pdf
===Games===
* 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]
* [http://www.crystalspace3d.org/ Crystal Space 3D]
* [http://www.vpython.org/ VPython 3D Programming in Python]
===Image Manipulation===
* Use Pillow, the Python2/3 fork of Python Image Library (PIL). 


==Games==
Fun examples:
* [http://www.crystalspace3d.org/ Crystal Space 3D]
* http://jeremykun.com/2012/01/01/random-psychedelic-art/
* [http://www.vpython.org/ VPython] - 3D Programming in Python
* http://pythonvision.org/basic-tutorial
* http://stackoverflow.com/questions/138250/read-the-rgb-value-of-a-given-pixel-in-python-programatically


==Python GUI Options==
===Python GUI Options===
I need to write some programs that use GUI.  
I need to write some programs that use GUI.  


* tkinter - built in
* tkinter - built in, but not recommended
 
* pyqt - Use PyQT5 (it's part of Anaconda)
* wxwidgets - It's okay, but use PyQT5
* [http://en.wikibooks.org/wiki/Python_Programming/GUI_Programming wikibooks] has a page on Python Program/GUI Programming options
* [http://en.wikibooks.org/wiki/Python_Programming/GUI_Programming wikibooks] has a page on Python Program/GUI Programming options
* [http://www.fltk.org/ FLTK], the Fast Light Toolkit


Books on Tkinter:
===Resources for  Tkinter===
* [http://my.safaribooksonline.com/book/programming/python/0130260363/advanced-topics/ch18#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTAtMTMtMDI2MDM2LTMvNDA5 Chapter 18 of Core Python Programming] discusses GUI Programming with Tkinter
* [http://my.safaribooksonline.com/book/programming/python/0130260363/advanced-topics/ch18#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTAtMTMtMDI2MDM2LTMvNDA5 Chapter 18 of Core Python Programming] discusses GUI Programming with Tkinter
* [http://docstore.mik.ua/orelly/other/python2/ Programming Python, 2nd Edition, Chapter 7 and 8]
* [http://docstore.mik.ua/orelly/other/python2/ Programming Python, 2nd Edition, Chapter 7 and 8]
Line 38: Line 72:
* [http://www.pythonware.com/library/tkinter/introduction/ Original 'An introduced to Tkinter'] by Fredrik Lundh
* [http://www.pythonware.com/library/tkinter/introduction/ Original 'An introduced to Tkinter'] by Fredrik Lundh


Other options:
==Building Web Applications==
* Uses [http://www.fltk.org/ FLTK], the Fast Light Toolkit
You basically have two options:
* Write a CGI script (slow, but easy)
* Some sort of [https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface Web Server Gateway Interface] (WSGI)
* See also https://wiki.python.org/moin/WebFrameworks


==Python Training==
Examples and resources:
I've seen these and highly recommend them:
* https://github.com/MichaelPereira/webhooks-demo-application
* [http://video.google.com/videoplay?docid=7760178035196894549 Advanced Python or Understanding Python], Thomas Wouters, Google Tech Talks, February 21, 2007.  
* https://mattcarrier.com/flask-dreamhost-setup/
* https://www.byteconsole.com/get-flask-up-and-running-on-a-dreamhost-server-with-passenger/


===Printed Materials===
===WSGI options===
* [http://diveintopython3.org/ Dive Into Python 3] (book)
* Flask (can run on Apache with Passenger, but needs its own domain name)
* CherryPy


==Python Installation==
===Notes on Flask===
If you are using a Mac, you almost certainly want to ditch Apple's python implementation and instead install your own from:
    $ touch tmp/restart.txt        # reload your program
* http://www.python.org/download/releases/


If you want everybody to be able to use your GUI, you probably want to write it in Tkinter (Python's Tcl/Tk bindings). If you want to actually enjoy what you are writing, you want to use wxpython.
===Using Passengers on Dreamhost===
* https://help.dreamhost.com/hc/en-us/articles/215769578-Passenger-overview
* https://help.dreamhost.com/hc/en-us/articles/216137717-Python-overview
* https://help.dreamhost.com/hc/en-us/articles/115000218612-Installing-a-custom-version-of-Python
* https://help.dreamhost.com/hc/en-us/articles/115000702772-Installing-a-custom-version-of-Python-3
* https://help.dreamhost.com/hc/en-us/articles/215489338-Installing-virtualenv-and-custom-modules-in-Python
* https://help.dreamhost.com/hc/en-us/articles/115000221112-Using-pip-to-install-Python-modules


On the Mac, you can install matplotlib with this command using MacPorts::
==Python Installation==
  % sudo port install py-matplotlib py-ipython
If you are using a Mac, you almost certainly want to ditch Apple's python implementation and instead install your own.
 
==Image Manipulation==
Use Pillow, the Python2/3 fork of Python Image Library (PIL)
 
On Mac, install with:


    % sudo port install py27-Pillow py33-Pillow
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.


Links:
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..
* http://jeremykun.com/2012/01/01/random-psychedelic-art/
* http://pythonvision.org/basic-tutorial
* http://stackoverflow.com/questions/138250/read-the-rgb-value-of-a-given-pixel-in-python-programatically


==Python Graphics (mostly with graphics.py)==
* http://mcsp.wartburg.edu/zelle/python/graphics.py
* http://mcsp.wartburg.edu/zelle/python/
* http://mcsp.wartburg.edu/zelle/python/graphics/graphics.pdf
* http://cpsc110.umwblogs.org/installing-python-graphics-library/
* http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/graphics.html#
Alternative:
* http://plotdevice.io/
* http://www.cc.gatech.edu/classes/AY2013/cs1301_summer/presentations/calico_graphics.pdf
[[Category:Resources]]
[[Category:Resources]]

Revision as of 18:30, 1 September 2018

For Learning Python

I've reviewed these resources and highly recommend them:

Data Representation

Numerical Datas

  • numpy - numeric analysis in python (needed for matplotlib)
  • tabulate - create tables easily
  • jupyter notebook

Date Data

String Formatting

Text Processing

See Text processing notes.

Graphing, Graphics and Games

Graphing

Easy Graphics

Games

Image Manipulation

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

Fun examples:

Python GUI Options

I need to write some programs that use GUI.

  • tkinter - built in, but not recommended
  • pyqt - Use PyQT5 (it's part of Anaconda)
  • wxwidgets - It's okay, but use PyQT5
  • wikibooks has a page on Python Program/GUI Programming options
  • FLTK, the Fast Light Toolkit

Resources for Tkinter

Building Web Applications

You basically have two options:

Examples and resources:

WSGI options

  • Flask (can run on Apache with Passenger, but needs its own domain name)
  • CherryPy

Notes on Flask

   $ touch tmp/restart.txt         # reload your program

Using Passengers on Dreamhost

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 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..