fromdistutils.coreimportsetupfromdistutils.command.install_dataimportinstall_datafromdistutils.command.installimportINSTALL_SCHEMESimportosimportsysclassosx_install_data(install_data):# On MacOS, the platform-specific lib dir is /System/Library/Framework/Python/.../# which is wrong. Python 2.5 supplied with MacOS 10.5 has an Apple-specific fix# for this in distutils.command.install_data#306. It fixes install_lib but not# install_data, which is why we roll our own install_data class.deffinalize_options(self):# By the time finalize_options is called, install.install_lib is set to the# fixed directory, so we set the installdir to install_lib. The# install_data class uses ('install_data', 'install_dir') instead.self.set_undefined_options('install',('install_lib','install_dir'))install_data.finalize_options(self)ifsys.platform=="darwin":cmdclasses={'install_data':osx_install_data}else:cmdclasses={'install_data':install_data}deffullsplit(path,result=None):""" Split a pathname into components (the opposite of os.path.join) in a platform-neutral way. """ifresultisNone:result=[]head,tail=os.path.split(path)ifhead=='':return[tail]+resultifhead==path:returnresultreturnfullsplit(head,[tail]+result)# Tell distutils to put the data_files in platform-specific installation# locations. See here for an explanation:# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cbforschemeinINSTALL_SCHEMES.values():scheme['data']=scheme['purelib']# Compile the list of packages available, because distutils doesn't have# an easy way to do this.packages,data_files=[],[]root_dir=os.path.dirname(__file__)ifroot_dir!='':os.chdir(root_dir)django_dir='django'fordirpath,dirnames,filenamesinos.walk(django_dir):# Ignore dirnames that start with '.'fori,dirnameinenumerate(dirnames):ifdirname.startswith('.'):deldirnames[i]if'__init__.py'infilenames:packages.append('.'.join(fullsplit(dirpath)))eliffilenames:data_files.append([dirpath,[os.path.join(dirpath,f)forfinfilenames]])# Small hack for working with bdist_wininst.# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.htmliflen(sys.argv)>1andsys.argv[1]=='bdist_wininst':forfile_infoindata_files:file_info[0]='\\PURELIB\\%s'%file_info[0]# Dynamically calculate the version based on django.VERSION.version_tuple=__import__('django').VERSIONifversion_tuple[2]isnotNone:version="%d.%d_%s"%version_tupleelse:version="%d.%d"%version_tuple[:2]setup(name="Django",version=version,url='http://www.djangoproject.com/',author='Django Software Foundation',author_email='foundation@djangoproject.com',description='A high-level Python Web framework that encourages rapid development and clean, pragmatic design.',packages=packages,cmdclass=cmdclasses,data_files=data_files,scripts=['django/bin/django-admin.py'],)