THIS APP HAS BEEN WITHDRAWN: due to standard-stream differences across Mac OS and py2app releases, the app described below was unusable on some systems. The app correctly routed standard streams to Terminal on El Capitan, but sent them to Console on Sierra+ making user interaction impossible. This stems from changes and issues in py2app, which has been shadowing changes to stream routing in Mac OS.
Specifically, py2app 0.10, used for builds, forces streams to Console in response to a Mac OS change; but this doesn't happen on El Capitan, and there's no way to disable the redirection elsewhere. py2app 0.11 backed this out and made the Console redirection an option; but its use on Sierra+ is iffy, and upgrading to 0.11 or later requires a prohibitive investment in program validation. Background: here, here, and here.
The better solution is to install Pillow along with Python on your machine. pip recently rolled out a major change that was publicized poorly enough to inspire the experimental app. If needed, though, you can still fetch Pillow by running all 3 of the following command lines in Terminal; they get the latest pip, and use it to install a usable Pillow for Tagpix (drop all "3" if you're running Tagpix with Python 2.X):
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py pip3 install Pillow
As of April 2018, the Tagpix (f.k.a. tagpix) photo-folder organizer program is now also available as a standalone app for Mac OS, because the Pillow package it requires has become difficult to install manually on that platform. The app requires no Python or Pillow installs, but runs the same as the source-code script.
Tagpix can be stored in and run from any folder; you'll tell it where your photo folders are by your inputs on each run. Because Tagpix has no GUI, adding it to Launchpad's /Applications folder is not generally useful.
For general Tagpix usage details, see its User Guide and home page.
~/Desktop$ Tagpix.app/Contents/MacOS/tagpix Apr 24 09:45:46 tagpix[16539]: tagpix renames and moves photos to a merged folder; proceed? y Apr 24 09:45:49 tagpix[16539] : Source - pathname of folder with photos to be moved? /Users/blue/Desktop/test/New Apr 24 09:46:05 tagpix[16539] : Destination - pathname of folder to move items to? /Users/blue/Desktop/test Apr 24 09:46:09 tagpix[16539] : Group items into by-year subfolders? y Apr 24 09:46:11 tagpix[16539] : List only: show target names, but do not rename or move? n Apr 24 09:46:14 tagpix[16539] : Delete all prior-run outputs in "/Users/blue/Desktop/test/MERGED/PHOTOS"? n Apr 24 09:46:18 tagpix[16539] : -------------------------------------------------------------------------------- Apr 24 09:46:18 tagpix[16539] : Analyzing source tree Apr 24 09:46:18 tagpix[16539] : -------------------------------------------------------------------------------- Apr 24 09:46:18 tagpix[16539] : Moving PHOTOS: 3 Apr 24 09:46:18 tagpix[16539] : /Users/blue/Desktop/test/New/DSC03337.JPG => /Users/blue/Desktop/test/MERGED/PHOTOS/2018/2018-04-23__DSC03337.JPG Apr 24 09:46:18 tagpix[16539] : /Users/blue/Desktop/test/New/DSC03338.JPG => /Users/blue/Desktop/test/MERGED/PHOTOS/2018/2018-04-23__DSC03338.JPG Apr 24 09:46:18 tagpix[16539] : ***Duplicate content was skipped: /Users/blue/Desktop/test/New/DSC03357.JPG == /Users/blue/Desktop/test/MERGED/PHOTOS/2018/2018-04-24__DSC03357.JPG Apr 24 09:46:18 tagpix[16539] : -------------------------------------------------------------------------------- Apr 24 09:46:18 tagpix[16539] : Moving MOVIES: 0 Apr 24 09:46:18 tagpix[16539] : -------------------------------------------------------------------------------- Apr 24 09:46:18 tagpix[16539] : Moving OTHERS: 0 Apr 24 09:46:18 tagpix[16539] : -------------------------------------------------------------------------------- Apr 24 09:46:18 tagpix[16539] : Missed: 1 Apr 24 09:46:18 tagpix[16539] : ['/Users/blue/Desktop/test/New/DSC03357.JPG'] Apr 24 09:46:18 tagpix[16539] : -------------------------------------------------------------------------------- Apr 24 09:46:18 tagpix[16539] : Bye. ~/Desktop$