TypeError: dist debe ser una instancia de Distribución

Mi paquete depende de BeautifulSoup. Si instalo mi paquete en un virtualenv nuevo a través de python setup.py develop , obtengo el siguiente error. Si ejecuto python setup.py develop una segunda vez, todo parece funcionar bien. No tengo ni idea de lo que está pasando. ¿Cómo arreglarlo para obtener una configuración reproducible?

 Best match: beautifulsoup4 4.3.2 Downloading https://pypi.python.org/packages/source/b/beautifulsoup4/beautifulsoup4-4.3.2.tar.gz#md5=b8d157a204d56512a4cc196e53e7d8ee Processing beautifulsoup4-4.3.2.tar.gz Writing /tmp/easy_install-1eBfi3/beautifulsoup4-4.3.2/setup.cfg Running beautifulsoup4-4.3.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-1eBfi3/beautifulsoup4-4.3.2/egg-dist-tmp-YmoFSq Traceback (most recent call last): File "setup.py", line 73, in  """, File "/usr/lib/python2.7/distutils/core.py", line 152, in setup dist.run_commands() File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command cmd_obj.run() File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/develop.py", line 27, in run self.install_for_development() File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/develop.py", line 129, in install_for_development self.process_distribution(None, self.dist, not self.no_deps) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 671, in process_distribution [requirement], self.local_index, self.easy_install File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/pkg_resources.py", line 564, in resolve dist = best[req.key] = env.best_match(req, self, installer) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/pkg_resources.py", line 802, in best_match return self.obtain(req, installer) # try and download/install File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/pkg_resources.py", line 814, in obtain return installer(requirement) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 593, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 623, in install_item dists = self.install_eggs(spec, download, tmpdir) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 809, in install_eggs return self.build_and_install(setup_script, setup_base) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1015, in build_and_install self.run_setup(setup_script, setup_base, args) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1000, in run_setup run_setup(setup_script, args) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 50, in run_setup lambda: execfile( File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 100, in run return func() File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 52, in  {'__file__':setup_script, '__name__':'__main__'} File "setup.py", line 27, in  'raven', File "/usr/lib/python2.7/distutils/core.py", line 152, in setup dist.run_commands() File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) File "/usr/lib/python2.7/distutils/dist.py", line 970, in run_command cmd_obj = self.get_command_obj(command) File "/usr/lib/python2.7/distutils/dist.py", line 846, in get_command_obj cmd_obj = self.command_obj[command] = klass(self) File "/home/domma/VirtualEnvs/orcid/local/lib/python2.7/site-packages/setuptools/__init__.py", line 69, in __init__ _Command.__init__(self,dist) File "/usr/lib/python2.7/distutils/cmd.py", line 59, in __init__ raise TypeError, "dist must be a Distribution instance" TypeError: dist must be a Distribution instance 

Este error tiene que ver con una discrepancia entre las versiones de distutils y setuptools instaladas en su máquina. Es probable que la actualización de setuptools a la versión actual resuelva el problema.

EDITAR : esta solución ya no funciona para mí (y aparentemente nunca funcionó para Jens; vea el comentario a continuación). Lo que ahora me funciona es importar setuptools antes que cualquier otra cosa en el script que esté llamando que lleve a este error.

Este error se discute en muchos temas en GitHub, en muchos paquetes, pero encuentro que esta discusión es la más informativa.

instalar dnspython pip instalar dnspython. O comprueba si tienes una versión anterior de dnspython y actualiza

La única forma en que pude resolverlo fue seguir https://bugs.python.org/file37554/distutils_accomodate_distribution_ducktypes.patch Por lo tanto, eliminé /usr/lib/python2.7/distutils/cmd.py y / usr / lib / python2.7 / distutils / cmd.pyc (ejecuté un python setup.py develop – solo para asegurarnos de que falle y no esté usando el pyc de otra parte) y luego recreado /usr/lib/python2.7/distutils/ cmd.py – solo esta vez con los cambios como se muestra en el parche. Luego, cuando utilicé python setup.py de nuevo, funcionó ..

Trate de usar pip para instalar su paquete

 $ pip install -e path/to/your/Project 

Consulte http://pip.readthedocs.org/en/latest/reference/pip_install.html#editable-installs para obtener más información.