#!/usr/bin/env python # -*- coding: utf-8 -*- r"""Setup script for exe distribution of IPython (does not require python). - Requires py2exe - install pyreadline *package dir* in ipython root directory by running: svn co http://ipython.scipy.org/svn/ipython/pyreadline/branches/maintenance_1.3/pyreadline/ wget http://ipython.scipy.org/svn/ipython/pyreadline/branches/maintenance_1.3/readline.py OR (if you want the latest trunk): svn co http://ipython.scipy.org/svn/ipython/pyreadline/trunk/pyreadline - Create the distribution in 'dist' by running "python exesetup.py py2exe" - Run ipython.exe to go. """ #***************************************************************************** # Copyright (C) 2001-2005 Fernando Perez # # Distributed under the terms of the BSD License. The full license is in # the file COPYING, distributed as part of this software. #***************************************************************************** # Stdlib imports import os import sys from glob import glob # A few handy globals isfile = os.path.isfile pjoin = os.path.join from distutils.core import setup from distutils import dir_util import py2exe # update the manuals when building a source dist # Release.py contains version, authors, license, url, keywords, etc. execfile(pjoin('IPython','Release.py')) # A little utility we'll need below, since glob() does NOT allow you to do # exclusion on multiple endings! def file_doesnt_endwith(test,endings): """Return true if test is a file and its name does NOT end with any of the strings listed in endings.""" if not isfile(test): return False for e in endings: if test.endswith(e): return False return True egg_extra_kwds = {} # Call the setup() routine which does most of the work setup(name = name, options = { 'py2exe': { 'packages' : ['IPython', 'IPython.extensions', 'IPython.external', 'pyreadline'], 'excludes' : ["Tkconstants","Tkinter","tcl",'IPython.igrid','wx', 'wxPython','igrid', 'PyQt4', 'zope', 'Zope', 'Zope2', '_curses','enthought.traits','gtk','qt', 'pydb','idlelib', ] } }, version = version, description = description, long_description = long_description, author = authors['Fernando'][0], author_email = authors['Fernando'][1], url = url, download_url = download_url, license = license, platforms = platforms, keywords = keywords, console = ['ipykit.py'], # extra params needed for eggs **egg_extra_kwds ) minimal_conf = """ import IPython.ipapi ip = IPython.ipapi.get() ip.load('ipy_kitcfg') import ipy_profile_sh """ if not os.path.isdir("dist/_ipython"): print "Creating simple _ipython dir" os.mkdir("dist/_ipython") open("dist/_ipython/ipythonrc.ini","w").write("# intentionally blank\n") open("dist/_ipython/ipy_user_conf.py","w").write(minimal_conf) if os.path.isdir('bin'): dir_util.copy_tree('bin','dist/bin')