python setuptools install_requires wird beim Überschreiben von cmdclass ignoriert

Ich habe einsetup.py das sieht so aus:

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},
)

Ich braucheMyInstall weil ich einige Bibliotheken von Github installieren und nicht verwenden wolltedependency_links Option, weil es entmutigt ist (zum BeispielHier), also kann ich das mit requirements.txt machen.

Wenn ich dieses Paket mit installierepipAlles funktioniert gut, aber aus einigen Gründen muss ich das so lösen, dass es auch mit pur klapptpython setup.py install. Und das tut es nicht.

Beim Übersteuerncmdclass imsetup() mit meiner eigenen klasse,install_requires scheint ignoriert zu werden. Sobald ich diese Zeile auskommentiere, werden diese Pakete installiert.

Ich weiß, dass install_requires zum Beispiel in distutils nicht unterstützt wird (wenn ich mich gut erinnere), aber es ist in setuptools. Und danncmdclass hätte keine Auswirkung aufinstall_requires.

Ich habe dieses Problem stundenlang gegoogelt und beim Stackoverflow viele ähnliche Antworten gefunden, aber nicht für dieses spezielle Problem.

Wenn Sie jedes benötigte Paket in die Datei "requirements.txt" einfügen, funktioniert alles einwandfrei, aber ich möchte verstehen, warum dies geschieht. Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage