我当前的setup.py将git commit哈希写入文件中,模块安装后可以访问该文件。但是,我想在开发模块时禁用该设置,因为setup.py文件不会被触发两次,并且哈希值将不准确。这带给我们一个问题:
是否可以通过setup.py判断模块是否以可编辑模式安装?即
pip install -e .
我发现了类似的问题here,但就我而言,即使是“ hack”也无法使用,因为该模块将直接用git安装,并且.git
目录即使对于常规安装也将存在在安装过程中。
答案 0 :(得分:2)
只需覆盖正确的命令。 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