python setuptools install_requires se ignora al anular cmdclass
tengo unsetup.py
que se parece a esto:
from setuptools import setup
from subprocess import call
from setuptools.command.install import install
class MyInstall(install):
def run(self):
call(["pip install -r requirements.txt --no-clean"], shell=True)
install.run(self)
setup(
author='Attila Zseder',
version='0.1',
name='entity_extractor',
packages=['...'],
install_requires=['DAWG', 'mrjob', 'cchardet'],
package_dir={'': 'modules'},
scripts=['...'],
cmdclass={'install': MyInstall},
)
NecesitoMyInstall
porque quiero instalar algunas bibliotecas de github y no quería usardependency_links
opción, porque se desaconseja (por ejemploaquí), así que puedo hacer esto con require.txt.
Cuando instalo este paquete conpip
, todo funciona bien, pero por alguna razón tengo que resolver esto de una manera que también funcione con puropython setup.py install
. Y no lo hace.
Al anularcmdclass
ensetup()
con mi propia claseinstall_requires
Parece ser ignorado. Tan pronto como comente esa línea, esos paquetes se están instalando.
Sé que install_requires no es compatible, por ejemplo, en distutils (si no recuerdo mal), pero está en setuptools. Y entoncescmdclass
no tendría ningún efecto eninstall_requires
.
Busqué en Google este problema durante horas, encontré muchos tipos de respuestas relacionadas en stackoverflow, pero no para este problema en particular.
Al poner todos los paquetes necesarios en require.txt, todo funciona bien, pero me gustaría entender por qué sucede esto. ¡Gracias!