PyOpenCL is a sister project to PyCUDA. It is a binding library that provides full access to OpenCL's API from Python and is also by Andreas Klöckner. It features many of the same concepts as PyCUDA, including cleanup for out-of-scope objects, partial abstraction over data structures, and error handling, all with minimal overhead. The project is available under the MIT license; its documentation is very good and plenty of guides and tutorials can be found online.
The main focus of PyOpenCL is to provide a lightweight connection between Python and OpenCL, but it also includes support for templates and metaprograms. The flow of a PyOpenCL program is almost exactly the same as a C or C++ program for OpenCL. The host program prepares the call of the device program, launches it, and then waits for the result.