如何使用setuptools/distutils触发构建后操作
我正在用py2app和setuptools来制作一个应用程序,所以当它创建好应用程序包后,我想对dist文件夹做点事情,比如创建一个安装程序或者上传它。
有没有什么办法可以做到呢?我找到了一些关于安装后操作的解决方案,但没有找到构建后操作的。
另外,我可以从我自己的脚本里调用'python setup.py py2app'来实现这个,但如果能在setup.py里直接完成就更好了。
3 个回答
你能不能解释一下你想要做什么?
我想对dist文件夹做点事情,比如创建一个安装程序或者上传它。
你说创建安装程序,是指为这个包构建一个发行版吗?而你说的上传,是指上传到pypi吗?还是其他地方?
我找到了一些安装后的解决方案,但没有找到构建后的。
这些是py2app的钩子或回调吗?
python setup.py py2app
这不是使用distutils的常规方式。通常是用 python setup.py install
。
回答:
py2app的目标是一个dist文件夹,我想用我的安装脚本打包并上传到我的网站。
编辑:
所以,你创建了一个使用distutils和setup.py的包。
当你运行setup.py时,它会为这个文件创建发行版,并把它们放在/dist文件夹里。
现在你想把构建好的文件上传到你的网站。
为此,你需要一个不同的工具。像是fabric这样的东西。
你可以使用fabric来创建一个脚本,执行构建命令,然后把构建好的文件上传到你的服务器。
可能有一些方法可以用setuptools或distutils来实现这个,但这些方法可能会比较复杂和不太好用。如果你想做类似的事情,我强烈推荐使用以下工具:
Paver可能是最简单的选择,因为你可以很可能直接使用你现有的setup.py文件。
我昨天回答了一个类似的问题,关于如何继承distutils.core.Command。
简单来说,继承这个类可以让你精确控制准备过程中的每一个步骤的行为,并且你可以创建自己的命令,几乎可以实现你想到的任何功能。
请看看我之前的回答,我觉得对你会有帮助。