Applications can be written almost completely in Python, but people are slow to change, so a considerable number of desktop applications are still written using C/C++ on Linux and Windows and a combination of C++ and Objective-C on Mac OS X. There has been a sustained trend of the use of Python to provide user automation or scripting, sometimes called macros, for C/C++ applications. This makes a lot of sense: * Developers don't have to waste time and money inventing their own scripting language. * Users don't have to learn a new automation language for every application they use, and can use Python books, exampling, and learning resources. * Python is a [[FreeSoftware|Free Software]] ([[OpenSource|Open Source]]) solution and can be embedded and distributed without charge, so there are no royalty payments or licensing hassles * Python is simple to learn, yet Python and its standard libraries are much more powerful than a proprietary language like VBScript * Python is cross-platform * [[AppsWithPythonScripting#head-3|tools]] like [[http://www.cython.org/|Cython]] and [[BoostPython|BoostPython]] make it easy to expose part or all of the application programming interface (API) * Python scripting can be added to legacy projects just as well as new ones so developers don't have to abandon their old C/C++ code libraries * On the Windows platform, Python has an excellent interface to COM (also known as ActiveX) and can be used to interface to almost any COM program (such as the MS-Office suite). Again, Python scripting can be added to enhance a project without change to the existing COM components. (See [[Win32All|Win32All]]) * [[http://pyobjc.sourceforge.net|PyObjC]] can be used to add scripting to any Cocoa app on Mac OS X * Many Mac OS applications provide Apple event-based scripting interfaces, allowing them to be controlled from languages such as [[http://www.apple.com/applescript/|AppleScript]], [[http://www.latenightsw.com/freeware/JavaScriptOSA/|JavaScript OSA]], Perl (via [[http://search.cpan.org/~cnandor/Mac-Glue/|Mac::Glue]]), Python (via [[http://freespace.virgin.net/hamish.sanderson/appscript.html|appscript]]), Tcl and UserTalk. (See [[MacPython|MacPython]]) For many of the same reasons, Python is often used as the "glue" language for a project. In the Java world, people are using [[Jython|Jython]] as the glue and scripting language. <> (!) '''This page is not for listing those applications primarily built with Python. Try [[Applications|Applications]] for those types of apps, tools, and frameworks.''' (!) '''Please keep wiki links as wiki links, use external links only if there is no existing page for the program.''' === Applications and Toolkits === ||'''Name''' ||'''Platform''' ||'''Notes''' || ||[[http://www.abaqus.com/|Abaqus]] ||multi-platform ||Finite element analysis, modeling, and visualization. Python is embedded for command scripting and GUI extensibility. || ||[[http://www.esri.com/software/arcgis/|ArcGis]] || || || ||[[http://www.applied-maths.com/bionumerics/bionumerics.htm|BioNumerics]] ||Windows ||A suite of bioinformatics software applications, [[http://www.applied-maths.com/support/workshop_python.htm|uses Python]] to automate series of actions that are executed repeatedly, to create custom reports, import and export non-standard formats, perform custom calculations, etc. || ||[[ClearSilver|ClearSilver]] ||multi-platform ||Web application framework || ||[[http://www.codesubwars.org/|CodeSubWars]] ||Windows ||Free programming game. Uses Python as scripting language for submarine robots. || ||Emacs, using [[http://pymacs.progiciels-bpi.ca/|Pymacs]] ||multi-platform ||Text editor. || ||[[http://www.fontlab.com/|FontLab]] ||Windows, Mac OS ||Commercial font editing software, uses Python as a macro language. || ||[[http://gxsm.sourceforge.net/|GXSM]] ||Linux, Mac OS X ||Gnome X Scanning Microscopy - multi-channel 2D/3D data acquisition and visualization || ||[[http://golly.sourceforge.net/|Golly]] || ||Open source, cross-platform Conway's Game of Life simulator. || ||[[https://helixcommunity.org/|Helix DNA]] ||multi-platform ||The Helix community is a collaborative effort among real, independent developers, and leading companies to extend the Helix DNA™ platform, the first open multi-format platform for digital media creation, delivery and playback. || ||[[http://kahakai.sourceforge.net/|Kahakai Window Manager]] ||POSIX and X11 ||Python is used for event and key binding configuration. || ||[[http://www.kaydara.com/products/motionbuilder/|Kaydara Motionbuilder]] ||Mac OS X, Windows ||Helpful for integrating into production pipelines and allows users to automate repetitive processes. || ||[[http://mahogany.sourceforge.net/|Mahogany]] ||Linux, Mac OS X, Windows ||[[OpenSource|OpenSource]] cross-platform mail and news client. || ||[[http://www.mindlathe.com/|MindLathe]] ||? ||AI middleware || ||[[http://www.garagecube.com/modul8/|GarageCube Modul8]] ||Mac OS X ||Video mixing and compositing for VJs and live performers; uses Python for internal scripting. || ||[[http://www.mushclient.com/|MUSHclient]] ||Windows & WINE ||MUD client || ||[[http://nsis.sourceforge.net/|NSIS2]] ||Windows ||There is an [[http://homepage.hispeed.ch/py430/python/|NSIS Python Plugin]] for this [[OpenSource|OpenSource]] installer for Windows. -- Note: ''makensis'', the installer compiler, now compiles and runs on POSIX systems too. || ||[[http://www.ogre3d.org/|OGRE]] ||multi-platform ||Object-Oriented Rendering Engine || ||[[http://www.openoffice.org/|OpenOffice]] ||multi-platform ||[[http://udk.openoffice.org/python/python-bridge.html|Python-UNO bridge]] for scripting OpenOffice with Python || ||Office and Outlook ||Windows ||While Microsoft Office apps including Microsoft Outlook were not originally designed to be scripted with Python, [[http://wiki.python.org/moin/PyWin32|PyWin32]] (formerly [[Win32All|Win32All]]) makes it possible to script Microsoft Office apps and build plug-ins. Of special note is the [[http://spambayes.sourceforge.net/windows.html|SpamBayes]] plug-in for Outlook which enables any Outlook user to use [[http://spambayes.sourceforge.net/windows.html|SpamBayes]] without even knowing anything about Python. || ||[[https://orange.biolab.si|Orange]] ||multi-platform ||Orange is a component-based data mining software. It includes a range of preprocessing, modelling and data exploration techniques. It is based on C++ components, that are accessed either directly (not very common), through Python scripts (easier and better), or through GUI objects called Orange Widgets. || ||[[http://www.gnome.org/projects/orca/|Orca]] ||GNOME ||Accessibility toolkit for applications using GTk+/AT-SPI that provides speech synthesis, braille, and magnification. || ||[[http://www.jasc.com/products/paintshoppro/|Paint Shop Pro 8]] ||Windows ||Photo and graphics editor. [[http://www.jasc.com/support/customercare/articles/psp8components.asp|PSP scripting resources]] || ||[[http://www.etc.cmu.edu/panda3d/|Panda3D]] ||multi-platform ||Open Source game and simulation engine. Disney is one of the notable users. Check out the [[http://www.python.org/pycon/dc2004/papers/29/Panda3D.htm|PyCon paper on Panda3d]]. || ||ProScena Studio || ||A high-level content-authoring system and runtime for creating real-time interactive 3D simulations for training, education and gaming applications. [[http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=SVBIZINK8.story&STORY=/www/story/03-25-2004/0002134657|press release]] || ||[[http://www.ciranova.com/products/|Ciranova's PyCell Studio]] || ||A tool from an Electronic Design Automation company || ||[[http://www.qgis.org/|Quantum GIS]] ||multi-platform ||User friendly open source Geographic Information System (GIS) || ||[[http://www.resolversystems.com/products/resolver-one.php|Resolver One]] ||.NET/CLR ||Programmable spreadsheet built around [[IronPython|IronPython]]. || ||[[http://www.scorpionvision.com/|Scorpion Vision Software]] ||Windows ||Machine-vision software for industrial use with Python scripting || ||[[http://www.scribus.net/|Scribus]] || || || ||[[http://www.silverrun.com/|SilverRun ModelSphere]] ||Windows/Linux/Solaris ||A relational data modeling tool with Jython scripting. || ||[[http://www.spss.com/devcentral/|SPSS]] || ||Statistical and data management package for analysts and researchers. || ||[[http://www.froglogic.com/squish|Squish]] ||multi-platform ||An automated GUI testing framework for Qt applications that supports Python scripting || ||[[http://subversion.tigris.org/|Subversion]] ||multi-platform ||A compelling replacement for CVS. See the [[http://subversion.tigris.org/project_links.html|Project Links]], [[http://subversion.tigris.org/bindings.html|Bindings]] or do a [[http://www.google.com/search?&q=site:subversion.tigris.org+python|Google site search]]. || ||[[http://netdragon.sourceforge.net|SuperKaramba]] ||Linux, KDE ||SuperKaramba allows you to create cool dekstop widgets with little to no programming experience. It's similar to "Konfabulator" for the Mac. || ||[[http://www.caligari.com/|truSpace]] ||Windows ||3D modelling/animation package || ||[[http://www.vim.org/|Vim]] ||multi-platform ||Text editor. || ||[[http://www.wincvs.org/|WinCvs]] ||Windows ||GUI front-end for CVS || ||[[http://www.xchat.org/|XChat]] , [[http://www.silverex.info/|SilvereX's free Windows version]] ||multi-platform ||IRC Client || === Games === ||'''Name''' ||'''Platform''' ||'''Notes''' || ||[[http://www.funkidsgames.com/games/byhockey_pc/|Backyard Hockey]] ||Windows ||[[http://onlamp.com/pub/a/python/2002/07/11/pythonnews.html|1]], [[http://www.cygnus-software.com/papers/gamescriptinginpython.html|2]], [[http://mail.python.org/pipermail/tutor/2003-June/023690.html|3]] || ||[[http://www.eagames.com/official/battlefield/battlefield2/us/home.jsp|Battlefield 2]] ||Windows? ||Scriptable in Python || ||[[http://www.bigworldtech.com/|BigWorld]] ||Windows ||Complete MMOG tool set. The [[http://www.bigworldtech.com/faq.php|FAQ]], [[http://www.bigworldtech.com/client/client_object_scripting.htm|Client Engine]] and [[http://www.bigworldtech.com/server/server_custom_worlds.htm|Server Engine]] pages highlight how Python is integrated. || ||[[http://www.codemasters.com/blade/|Blade of Darkness]] ||Windows || || ||[[http://butterfly.net/|Butterfly.net]] ||multi-platform ||"The scalable, reliable and high performance online game platform." Uses Python for advanced interactions between players and non-player characters || ||Cars with Guns ||Windows || || ||[[http://civilization4.net/files/modding/PythonAPI/|Civilization IV]] || || || ||[[http://www.earthandbeyond.ea.com/|Earth & Beyond]] ||Windows || || ||[[http://www.eve-online.com/|Eve-Online]] ||Windows ||Uses [[StacklessPython|StacklessPython]] for client and server. Description from the web site - EVE: The Second Genesis, is a massively multiplayer, online, persistent world game. perhaps even too real to be called a game, but definitely more fun than reality. Played on the Net, it takes place in a world that is alive and kicking every day, every hour. Players are spaceship captains cruising around the universe, trading, fighting and communicating with other players. || ||[[http://www.irrationalgames.com/ff/|Freedom Force]] ||Windows ||http://www.google.com/search?q=Freedom+Force+Python || ||[[http://www.gamerankings.com/htmlpages2/516506.asp|Frequency]] ||PS2 || || ||[[SpongeBob|SpongeBob]] Squarepants ||PS2 and GameCube ||See Jason's [[http://www.asbahr.com/papers.html|paper]] on the Python-based scripting system. || ||[[http://www.bridgecommander.com/|Star Trek Bridge Commander]] ||Windows || || ||[[http://www.atari.com/toee/|Temple of Elemental Evil]] || || || ||[[http://play.toontown.com/|Toontown Online]] ||Windows ||MMORPG. [[http://www.gamasutra.com/features/20040128/goslin_01.shtml|Postmortem: Disney Online's Toontown]] on Gamasutra. Also see info on Panda3D above. || ||[[http://uru.ubi.com/us/|Uru: Ages Beyond Myst]] ||Windows || || ||[[http://vegastrike.sourceforge.net/|Vega Strike]] ||Linux, Mac, Windows ||3D OpenGL Action Space Sim || ||[[http://www.wesnoth.org|Wesnoth]] ||Linux, Mac, Windows ||Open-source turn-based-strategy game, uses optional Python AI scripting since version 1.2.0 || === Graphics === ||[[http://flyingmeat.com/acorn/|Acorn]] ||MacOS X ||Image editor. || ||[[http://www.blender.org/|Blender]] ||multi-platform ||[[OpenSource|OpenSource]] software for 3D modeling, animation, rendering, post-production, interactive creation and playback. [[http://www.blender.org/documentation/245PythonDoc/API_intro-module.html|Blender Python API reference]] and [[http://www.blender.org/tutorials-help/python/|tutorials]]. || ||[[http://crystal.sourceforge.net/|Crystal Space]] ||multi-platform ||[[OpenSource|OpenSource]] 3D SDK || ||[[http://www.gimp.org/|GIMP]] ||multi-platform, GTK ||GNU Image Manipulation Program. [[http://www.daa.com.au/~james/software/pygimp/|PyGimp]] is a package that allows people to write plug-ins for Gimp on Python rather than Script-Fu (Scheme), Perl, Tcl or C. || ||[[http://www.sidefx.com|SideFX Houdini]] || ||Professional 3D animation and visual effects software || ||[[http://wiki.inkscape.org/wiki/index.php/PythonEffectTutorial|Inkscape]] ||multi-platform ||Scalable Vector Graphics editor || ||[[http://irrlicht.sourceforge.net/|irrlicht]] ||multi-platform ||The Irrlicht Engine is an open source high performance realtime 3D engine written and usable in C++ and also available for .NET languages. It is completely cross-platform, using D3D, OpenGL and its own software renderer, and has all of the state-of-the-art features which can be found in commercial 3d engines. || ||[[http://www.autodesk.com/us/maya/docs/Maya85/wwhelp/wwhimpl/common/html/wwhelp.htm?context=DeveloperResources&file=Introduction_to_Maya_Python_API.html|Autodesk Maya]] || ||3D modeling, animation, effects, and rendering program. || ||[[http://oss.sgi.com/projects/inventor/|Open Inventor]] ||multi-platform ||Object-oriented 3D toolkit. [[http://pivy.tammura.at/|Pivy]] is the Python binding for Open Inventor. Check out the [[http://www.python.org/pycon/dc2004/papers/47/pycon-pivy-paper.html|Pycon paper on Pivy]]. || ||[[http://www.curiouslabs.com/|Poser]] ||Windows and Mac OS X ||3D character animation tool || ||[[http://www.e-onsoftware.com/Products/vue5infinite/|Vue Infinite]] ||Multi-platform ||Vue is e-on software's award-winning, complete 3D studio to create, render and animate ultra-realistic 3D natural environments. || ||[[http://www.cgw.com/ME2/dirmod.asp?sid=&nm=&type=Publishing&mod=Publications::Article&mid=8F3A7027421841978F18BE895F87F791&tier=4&id=25375C2E874C44A29BFB7FDF86F4FD75|Zeno]] || ||Internal graphics pipeline used by Industrial Light & Magic. || === Tools For Integrating Python === * [[Pyrex|Pyrex]] -- now superceded by [[http://www.cython.org/|Cython]] * [[http://www.swig.org/|SWIG]] (Wiki:SimplifiedWrapperAndInterfaceGenerator) * [[BoostPython|BoostPython]] and [[http://www.boost.org/libs/python/doc/index.html|Boost.Python]] (official page) * [[http://pyobjc.sourceforge.net|PyObjC]] (Mac OS X) * [[http://www.riverbankcomputing.co.uk/sip/index.php|SIP]] === Articles === * [[http://www.idevnews.com/TipsTricks.asp?ID=107|Devs Using Python to Boost Integration]] - In this two-part interview, Martelli offers Win32, Java and .NET devs some useful perspectives on Python, and how Python scripting can extend the integration capabilities of their Win32, ASP.Net, Java and C/C++ applications. * Embedding Python in Multi-Threaded C/C++ Applications in [[http://www.linuxjournal.com/article.php?sid=3641|LinuxJournal]] * [[https://www.boost.org/doc/libs/1_66_0/libs/python/doc/html|Building Hybrid Systems with Boost.Python]] * [[http://www.suttoncourtenay.org.uk/duncan/accu/integratingpython.html|Integrating Python, C and C++]], presented at the ACCU conference by Duncan Booth, and his [[http://www.suttoncourtenay.org.uk/duncan/accu/accuconf2003.zip|conference slides]] === Other Resources (many apps from pages below need to be copied to this page) === * [[PythonEditors|PythonEditors]] * [[http://www.python.org/community/users.html|Organizations and Apps using Python]] * http://www.thinkware.se/cgi-bin/thinki.cgi/PythonUsers * [[http://www.cygnus-software.com/papers/gamescriptinginpython.html|Game Scripting in Python]] * [[http://www.onlamp.com/pub/a/python/2002/07/11/pythonnews.html|Humongous Games]] * [[IntegratingPythonWithOtherLanguages|IntegratingPythonWithOtherLanguages]] === Additional Notes === After adding Panda3D and Open Inventor I've started to wonder whether those really qualify as apps the way I originally envisioned this list? Perhaps we should have a separate page for C/C++ libraries, frameworks, etc. that have Python bindings? That would include frameworks like GTK, QT, and [[WxWidgets|WxWidgets]] which have popular Python bindings. Regardless, all the Python bindings available for popular C/C++ tools and frameworks shows the agility of Python. There are great benefits to adding Python bindings to existing C/C++ (and Java) code bases so that you can leverage the power and flexibility of Python without abandoning an existing code base or giving up the speed of C/C++ code. In these cases, Python is a complement rather than a complete replacement for another programming language. -- [[KevinAltis|KevinAltis]]