如何打包和分发Python程序(.py源代码),以便其他开发人员可以轻松安装所有必需的依赖项?
如何打包和分发Python程序(.py源代码),以便其他开发人员可以轻松安装所有必需的依赖项?
我正在开发一个Python应用程序,使用了一些通过pip安装的包,例如Flask、requests、PIL。
那么,我该如何分发我的程序,以便其他人可以轻松安装每个必需依赖项/包,并在每台计算机上使其运作?setup.py是否符合我的需求?如果是这样,能否请您解释一下它的作用并提供一个可以实现我的目标的示例setup.py?
PS:我还有一个小问题:我需要在我的程序的顶级文件夹中提供一个__init__.py文件吗,还是只需要在子目录中提供即可?
admin 更改状态以发布 2023年5月24日
根据这里的文档
setup.py
还有另一种Python库的依赖关系规范,称为setup.py。Setup.py是分发和安装Python库的标准。如果您正在构建Python库,比如requests或underwear,您必须包含setup.py,以便依赖管理器可以正确地安装库以及库的其他依赖项。在Python社区中仍然存在相当大的混淆,关于requirements.txt和setup.py之间的区别,请阅读这篇写得不错的文章以获取进一步的澄清。
此外,也可以参考以下内容:
您可以查看这个示例,以了解如何制作您的setup.py:
https://github.com/pypa/sampleproject/blob/master/setup.py
另外,这里有一个指南:
https://pythonhosted.org/an_example_pypi_project/setuptools.html
在不太遥远的过去,我使用这个指南学习如何打包和分发我的Python代码,然后一些好心人创建了flit,它使我可以在三个步骤中完成整个过程。
$pip install flit
创建我的元数据文件:
[metadata] author=Some guy author-email=some-email@nowhere.com home-page=https://github.com/someuser/somepackage requires=requests requires-python= >=3 description-file=README.rst classifiers=Intended Audience :: Developers License :: OSI Approved :: BSD License Programming Language :: Python :: 3 Topic :: Software Development :: Libraries :: Python Modules
发布我的包:
$pip flit publish
完成啦!!!