如何使用setuptools/distutils触发构建后操作

6 投票
3 回答
2368 浏览
提问于 2025-04-15 14:19

我正在用py2app和setuptools来制作一个应用程序,所以当它创建好应用程序包后,我想对dist文件夹做点事情,比如创建一个安装程序或者上传它。

有没有什么办法可以做到呢?我找到了一些关于安装后操作的解决方案,但没有找到构建后操作的。

另外,我可以从我自己的脚本里调用'python setup.py py2app'来实现这个,但如果能在setup.py里直接完成就更好了。

3 个回答

0

你能不能解释一下你想要做什么?

我想对dist文件夹做点事情,比如创建一个安装程序或者上传它。

你说创建安装程序,是指为这个包构建一个发行版吗?而你说的上传,是指上传到pypi吗?还是其他地方?

我找到了一些安装后的解决方案,但没有找到构建后的。

这些是py2app的钩子或回调吗?

python setup.py py2app

这不是使用distutils的常规方式。通常是用 python setup.py install

回答:

py2app的目标是一个dist文件夹,我想用我的安装脚本打包并上传到我的网站。

编辑:

所以,你创建了一个使用distutils和setup.py的包。

当你运行setup.py时,它会为这个文件创建发行版,并把它们放在/dist文件夹里。

现在你想把构建好的文件上传到你的网站。

为此,你需要一个不同的工具。像是fabric这样的东西。

你可以使用fabric来创建一个脚本,执行构建命令,然后把构建好的文件上传到你的服务器。

0

可能有一些方法可以用setuptools或distutils来实现这个,但这些方法可能会比较复杂和不太好用。如果你想做类似的事情,我强烈推荐使用以下工具:

Paver可能是最简单的选择,因为你可以很可能直接使用你现有的setup.py文件。

4

我昨天回答了一个类似的问题,关于如何继承distutils.core.Command

简单来说,继承这个类可以让你精确控制准备过程中的每一个步骤的行为,并且你可以创建自己的命令,几乎可以实现你想到的任何功能。

请看看我之前的回答,我觉得对你会有帮助。

撰写回答