参考资料:
[Pytorch-lightning的setup.py文件]
[知乎上的打包文章]
为什么我要写这个随笔呢?因为我想修改pytorch-lightning的源码并对其进行魔改,然后在公司的分布式训练集群上进行训练。
具体的工作流如下:
1. 开发机上git clone pytorch-lightning的源码
2. 魔改源码
3. 打包成wheel文件
4. 上传到公司内部的云存储集群上
5. 修改requirements.txt, 实现在安装的时候加载我们自定义的包
关于第五步,对于requirements.txt的修改主要是新加一行:
https://XX.com/foobar/pytorch_lightning-2.5.1rc2-py3-none-any.whl
这样pip在安装的时候就会下载这个whl然后进行安装,至于pip的默认安装行为还是比较有趣的,我准备新写一个随笔来调查。下面主要讲一下第三步的做法,参考pytorch-lightning的注释。
首先,魔改完之后目录长这样:
包含setup.py这个东西,显然就是开发一个pip包的组织方式。如何打包?
Building packages as sdist or binary wheel and installing or publish to PyPI afterwords you use command `python setup.py sdist` or `python setup.py bdist_wheel` accordingly. In case you want to build just a particular package you want to set an environment variable: `PACKAGE_NAME=lightning|pytorch|fabric python setup.py sdist|bdist_wheel`
follow指引,则使用python setup.py sdist会打包成tar.gz也就是源码,使用python setup.py bdist_wheel应该是二进制格式,我理解应该会进行一些预编译的操作,如果没有的话就是纯纯的.py文件,也不需要编译。这里值得注意的是如果这个仓库同时是多个pip包的开发仓库,例如lighting | lighting-fabric | pytorch-lightning的话,这个就要根据作者在setup.py里面的说明来分别打包了,像pytorch-lighting就是通过环境变量来控制的。