Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
最近一位客户问我为什么我们创建的Django项目的根目录下都有一个setup.py。其他很多项目没有setup.py,也没有问题.那我为什么要使用它?解释有点冗长,所以我想把它写成一篇博文。
什么是setup.py?
根据Python的官方文档:
setup.py是使用Distutils构建、分发和安装模块的核心。setup.py的主要作用是描述您的模块在Distutils中的分布,以便在您的模块上正确的运行各种命令。
Distutils是Python标准库的一部分,您可能比较熟悉的扩展工具像setuptools,pip和pipenv。您从Python软件包索引(PyPI)下载的每个软件包都有一个setup.py。它被pipenv/pip/setuptools/distutils用来确定Python模块在项目中的位置以及需要什么依赖关系,并且需要安装哪些脚本等等。
为什么使用setup.py?
那么为什么Django项目应该使用setup.py?
Django就是Python
虽然早期的Django版本未使用Python的最佳实现方法,这被普遍视为“坏事”(请阅读关于“magic removal branch”的一些历史记录)。但是目前已经做了很多修改来使Django像其他任何Python代码一样工作。如果询问核心开发人员,他们会告诉您,“Django就是Python。”
Django放在这篇文章标题括号中的原因是因为答案与Django没有任何关系。我们使用setup.py的一个原因是因为它是Python标准,Django项目应该遵循Python标准。
您的项目是(或者应该是)Python模