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 installierepip
Alles 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!