import urllib2 import zipfile import subprocess import sys import os import platform def pip_install(package): subprocess.call([sys.executable, "-m", "pip", "install", package]) print "installing requests" pip_install('requests') import requests print "downloading pybass" filedata = urllib2.urlopen('http://master.dl.sourceforge.net/project/pybass/pybass_055.zip') datatowrite = filedata.read() with open('pybass_055.zip', 'wb') as f: f.write(datatowrite) f.close() print "extracting pybass" zip_ref = zipfile.ZipFile('pybass_055.zip', 'r') zip_ref.extractall() zip_ref.close() print "renaming pybass.py" if os.path.exists("pybass/__init__.py"): os.remove('pybass/__init__.py') os.rename('pybass/pybass.py', 'pybass/__init__.py') BASSZIP = "bass24.zip" BASSDLL = "bass.dll" BASSOPUSZIP = "bassopus24.zip" BASSOPUSDLL = "bassopus.dll" if platform.system() == "Darwin": BASSZIP = "bass24-osx.zip" BASSDLL = "libbass.dylib" BASSOPUSZIP = "bassopus24-osx.zip" BASSOPUSDLL = "libbassopus.dylib" elif platform.system() == "Linux": BASSZIP = "bass24-linux.zip" BASSDLL = "libbass.so" BASSOPUSZIP = "bassopus24-linux.zip" BASSOPUSDLL = "libbassopus.so" print "downloading", BASSZIP filedata = urllib2.urlopen('http://us.un4seen.com/files/'+BASSZIP) datatowrite = filedata.read() with open(BASSZIP, 'wb') as f: f.write(datatowrite) f.close() print "extracting "+BASSDLL+" from "+BASSZIP zip_ref = zipfile.ZipFile(BASSZIP, 'r') zip_ref.extract(BASSDLL) zip_ref.close() print "downloading", BASSOPUSZIP filedata = urllib2.urlopen('http://us.un4seen.com/files/'+BASSOPUSZIP) datatowrite = filedata.read() with open(BASSOPUSZIP, 'wb') as f: f.write(datatowrite) f.close() print "extracting "+BASSOPUSDLL+" from "+BASSOPUSZIP zip_ref = zipfile.ZipFile(BASSOPUSZIP, 'r') zip_ref.extract(BASSOPUSDLL) zip_ref.close() print "installing apng, six, appdirs, packaging" pip_install("apng six appdirs packaging") try: from PIL import Image if Image.__version__ != "5.3.0": jm = raw_input("Pillow version 5.3.0 is recommended for compatibility with AO2XP; You have version %s\nReplace with version 5.3.0? (Y/N) > " % Image.__version__).lower() if jm == "y": print "installing Pillow 5.3.0" pip_install("Pillow==5.3.0") else: print "Pillow 5.3.0 already exists, skipping" except ImportError: print "installing Pillow 5.3.0" pip_install("Pillow==5.3.0") print "installing pyinstaller" pip_install('pyinstaller==3.6') if platform.system() == "Windows": print "downloading pyqt4" filedata = requests.get('http://raw.githubusercontent.com/dhb52/python-lib/master/PyQt4-4.11.4-cp27-cp27m-win32.whl') datatowrite = filedata.content with open('PyQt4-4.11.4-cp27-cp27m-win32.whl', 'wb') as f: f.write(datatowrite) f.close() print "installing pyqt4" pip_install('PyQt4-4.11.4-cp27-cp27m-win32.whl') elif platform.system() == "Darwin": print "installing pyobjc" pip_install("pyobjc") try: import Tkinter print "for Mac OS X, use homebrew or macports to install pyqt4." print " brew install cartr/qt4/pyqt" print " sudo port install py27-pyqt4" except: # mac doesn't have tkinter print "for Mac OS X, use homebrew or macports to install tkinter and pyqt4." print "Homebrew:" print " brew uninstall python" print " brew install tk" print " brew install python --with-tcl-tk" print " brew install cartr/qt4/pyqt" print "MacPorts:" print " sudo port install py27-tkinter -x11 +quartz" print " sudo port install py27-pyqt4" elif platform.system() == "Linux": print "you need to install PyQt4 and tkinter on your linux distro after this" print "done"