python setuptools install_requires игнорируется при переопределении cmdclass
у меня естьsetup.py
это выглядит так:
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},
)
я нуждаюсьMyInstall
потому что я хочу установить некоторые библиотеки из GitHub, и я не хотел использоватьdependency_links
вариант, потому что это не рекомендуется (например,Вот), так что я могу сделать это с помощью require.txt.
Когда я устанавливаю этот пакет сpip
все работает нормально, но по некоторым причинам я должен решить это таким образом, чтобы он также работал с чистымpython setup.py install
, И это не так.
При переопределенииcmdclass
вsetup()
с моим собственным классом,install_requires
кажется, игнорируется. Как только я закомментирую эту строку, эти пакеты устанавливаются.
Я знаю, что install_requires не поддерживается, например, в distutils (если я хорошо помню), но он есть в setuptools. А потомcmdclass
не будет иметь никакого влияния наinstall_requires
.
Я часами гуглял эту проблему, нашел много похожих ответов на stackoverflow, но не для этой конкретной проблемы.
С размещением каждого необходимого пакета в файле require.txt все работает нормально, но я бы хотел понять, почему это происходит. Спасибо!