Python distutils到底做什么?

Python distutils到底做什么?,python,distutils,Python,Distutils,我已经阅读了文档,但我不明白 为什么我必须使用distutils来安装python模块 为什么我不能将模块保存在python路径中?您不必使用distutils让自己的模块在自己的机器上工作;将它们保存在python路径中就足够了 当您决定发布您的模块供其他人使用时,distutils为他们提供了一种标准方法,让他们在自己的计算机上安装您的模块。(在“distutils”中的“dist”意味着分发,就像将您的软件分发给其他人一样。)您不必使用distutils。您可以手动安装模块,就像您可以手动

我已经阅读了文档,但我不明白

为什么我必须使用distutils来安装python模块


为什么我不能将模块保存在python路径中?

您不必使用distutils让自己的模块在自己的机器上工作;将它们保存在python路径中就足够了


当您决定发布您的模块供其他人使用时,distutils为他们提供了一种标准方法,让他们在自己的计算机上安装您的模块。(在“distutils”中的“dist”意味着分发,就像将您的软件分发给其他人一样。)

您不必使用distutils。您可以手动安装模块,就像您可以手动编译C++库(编译每个实现文件,然后链接.Objo文件)或手动安装应用程序(编译,放入自己的目录,添加一个快捷方式启动)。它只是变得乏味和容易出错,因为每个重复的任务都是手工完成的。 此外,我为示例列出的手动步骤非常乐观——通常情况下,您希望做得更多。例如,PyQt将.ui添加到-.py编译器的路径中,以便您可以通过命令行调用它。 所以你最终得到了一堆可以自动化的工作。这本身就是一个很好的论点

此外,开发人员还必须编写安装说明。使用distutils等,您只需指定项目的组成部分(以及仅当您需要时才需要的额外功能)-例如,您不需要告诉它将所有内容都放在
站点包中的新文件夹中,因为它已经知道这一点


因此,最终,开发人员和用户更容易使用python模块?要安装pypi中存在的python包,您应该执行以下操作:

 pip install <name_of_package> 
或者,如果您想在开发模式下安装它(您可以在软件包中更改并查看结果,而无需再次安装):

这是分发python包(setup.py)的常用方法;这个setup.py调用distils

总而言之,这个distutils是一个python包,它帮助开发人员创建一个python包安装程序,该安装程序将通过运行setup.py install命令来构建和安装给定的包

因此,Distils的基本功能是(我只坐重要的东西):

  • 它搜索包的依赖项(自动安装依赖项)
  • 它复制站点包中的包模块,如果处于开发模式,则只创建一个sym链接
  • 你可以创建一个鸡蛋你的包
  • 它还可以对您的包运行测试
  • 您可以使用它将包上载到pypi
如果您想了解更多详细信息,请参见此

  python setup.py install 
  python setup.py develop