ho trascorso un bel po 'per capire questo fuori, i vari suggerimenti là fuori sono suddivisi in vari modi - si rompono installazione delle dipendenze, o non funzionano in pip, ecc Ecco la mia soluzione:
in setup.py:
from setuptools import setup, find_packages
from setuptools.command.install import install
from distutils.command.install import install as _install
class install_(install):
# inject your own code into this func as you see fit
def run(self):
ret = None
if self.old_and_unmanageable or self.single_version_externally_managed:
ret = _install.run(self)
else:
caller = sys._getframe(2)
caller_module = caller.f_globals.get('__name__','')
caller_name = caller.f_code.co_name
if caller_module != 'distutils.dist' or caller_name!='run_commands':
_install.run(self)
else:
self.do_egg_install()
# This is just an example, a post-install hook
# It's a nice way to get at your installed module though
import site
site.addsitedir(self.install_lib)
sys.path.insert(0, self.install_lib)
from mymodule import install_hooks
install_hooks.post_install()
return ret
Poi, nella chiamata alla funzione di configurazione, passare l'arg:
cmdclass={'install': install_}
Si potrebbe utilizzare la stessa idea per costruire al contrario di installare, dare da soli un decoratore per rendere più facile, ecc Questo è stato testato tramite pip, e diretta 'python setup.py install' invocazione.
hth Un
http://stackoverflow.com/q/11331175/150999 http://stackoverflow.com/a/1321345/150999 – Sam
In due anni ci dovrebbe essere abbastanza tempo per riformattare una risposta che è stato contrassegnato come risposta corretta. – erikbwork
Sentiti libero di modificare la risposta. –