14

使用from setuptools.command.install import install,如果我运行python setup.py install. 这是相当微不足道的。

目前,脚本只打印一些文本,但我希望它处理安装新包时需要发生的系统更改——例如,备份包正在使用的数据库。

我想为我的包生成一个 Python 轮,然后复制它并将其安装在一组部署机器上。但是,我的自定义安装脚本不再在部署机器上运行。

我究竟做错了什么?这甚至可能吗?

4

2 回答 2

5

不要将包安装和系统部署混为一谈

Python 包的安装(使用任何类型的打包工具或格式)应侧重于使该包可从 Python 代码中使用。

部署,可能包括数据库修改等绝对超出范围,应由 fab、salt-stack 等其他工具处理。

事实上,某件事看起来相当微不足道,并不意味着人们应该去做。

风险是,您将使您的包安装难以重用,因为它会被其他与纯包安装无关的东西破坏。

挂钩安装过程和修改环境的选项甚至被一些人认为是设计缺陷,导致 Python 打包情况大乱 - 请参阅 Armin Roacher 在Python Packaging: Hate, Hate, Hate Everywhere的章节“PTH: The failed Design that启用这一切”

于 2014-07-15T04:29:35.100 回答
3

指定车轮包格式的PEP 427没有为自定义安装前或安装后脚本留下任何规定。

因此,在安装 wheel 包期间无法运行自定义脚本。

您必须将自定义脚本添加到包中您希望开发人员首先执行的位置。

于 2019-10-10T22:03:20.887 回答