python - 如何从 setup.py 中判断模块是否以可编辑模式安装
问题描述
我当前的 setup.py 将 git commit 哈希写入模块安装后可以访问的文件中。但是,我想在开发模块时禁用它,因为 setup.py 文件不会被触发两次并且哈希值不准确。这给我们带来了一个问题:
有没有办法从 setup.py 判断模块是否以可编辑模式安装?IE,
pip install -e .
我在这里发现了一个类似的问题,但在我的情况下,即使是“hack”也不起作用,因为模块将直接使用 git 安装,并且.git
即使在安装过程中正常安装,该目录也会存在。
解决方案
只需覆盖正确的命令。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
推荐阅读
- utf-8 - 从 bash 中的大文本文件中删除 latin-1 字符
- javascript - 按年龄对数组进行排序
- excel - 使用 Apache poi 在 Selenium 中处理 excel 的问题
- python - 如何在 scrapy 中使用选择器解析这个特定的 html 正文?
- javascript - 将多个复选框值存储在一个 localStorage 键中
- c# - 控件上的透明图像
- android - VS 2017 中的 Xamarin Android 调试问题
- python - 删除非常大的数据集上的重复项
- spring-boot - 应用程序启动时的 Spring Data JPA 查询验证
- typescript - Nativescript 身份验证服务未登录