Как отличить от setup.py если модуль устанавливается в редактируемом режиме
Мой текущий setup.py записывает хэш git commit в файл, к которому модуль может получить доступ после его установки. Тем не менее, я хотел бы отключить это, когда я разрабатываю модуль, так как setup.py файл не будет инициирован дважды, и хэш будет неточным. Это подводит нас к вопросу:
Есть ли способ отличить от setup.py устанавливается ли модуль в редактируемом режиме? то есть,
pip install -e .
Я нашел аналогичный вопрос здесь , но даже "взлом" не будет работать в моем случае, так как модуль будет установлен непосредственно с git, и каталог .git
будет существовать даже для обычных установок во время установки.
1 ответ:
Просто переопределите правильную команду.
install
выполняетсяpip install .
,develop
наpip install --editable .
.# setup.py from distutils import log from setuptools import setup from setuptools.command.install import install as install_orig from setuptools.command.develop import develop as develop_orig class develop(develop_orig): def run(self): self.announce('this code will run on editable install only', level=log.INFO) super().run() class install(install_orig): def run(self): self.announce('this code will run on normal install only', level=log.INFO) super().run() setup( name='spam', cmdclass={'install': install, 'develop': develop} )
Проверьте его:
$ pip install . -vvv | grep "this code" this code will run on normal install only $ pip install -e . -vvv | grep "this code" this code will run on editable install only