NLPy is a Python package for numerical optimization. It aims to provide a toolbox for solving linear and nonlinear programming problems that is both easy to use and extensible. It is applicable to problems that are smooth, have no derivatives, or have integer data. Implementing, testing, prototyping, experimenting with, and modifying innovative optimization algorithms for large-scale constrained problems are difficult and challenging tasks, regardless of the programming language. The purpose of NLPy is to offer an environment in which such tasks naturally combine with the programming language and the algorithmics in such a way that they are not more difficult than they really should and yet efficient large-scale implementations remain possible. (Source: