什么是建筑和安装?

时间:2013-11-03 12:44:58

标签: python build install

这可能是一个非常容易和直接回答的问题,但是,尽管有几年的编程经验,出于某种原因,我仍然没有完全了解“构建”意味着什么的确切概念然后安装”。我知道如何使用它们并使用它们很多,但不知道在后台发生的确切过程......

我浏览了网页,维基百科等...但是没有一个简单的答案,我也找不到。

我试图理解的一个很好的例子是向python添加新模块: 的 http://docs.python.org/2/install/index.html#how-installation-works

它说 “构建命令负责将文件安装到构建目录中”

然后对于安装命令: “运行构建命令后(无论是显式运行,还是install命令都为您执行),install命令的工作相对简单:all它必须做的是将build / lib(或build / lib.plat)下的所有内容复制到您选择的安装目录。“

基本上所说的是: 1.将所有内容复制到构建目录,然后...... 2.将所有内容复制到安装目录

在解释中某处缺少一个过程...恭维?

会欣赏一些直截了当但不太狡猾的答案,但要尽可能详细地说明:)

希望我不是唯一一个不知道详细答案的人......

谢谢!

Aivoric

3 个答案:

答案 0 :(得分:6)

构建意味着在沙箱位置将源代码编译为二进制文件,如果出现问题,它将不会影响您的系统,例如源代码目录中的build子目录。

安装意味着将构建的二进制文件从build子目录复制到系统路径中的一个位置,以便于访问它们。这很少是通过直接复制命令完成的,而且通常由某个包管理器完成,它可以跟踪创建的文件并在以后轻松卸载它们。

通常,构建命令会执行所需的所有编译和链接,但Python是一种解释型语言,因此如果库中只有纯Python文件,那么构建中就没有编译步骤。实际上,所有内容都被复制到构建目录,然后再次复制到最终位置。只有当库依赖于用其他语言编写的需要编译的代码时,才会有编译步骤。

答案 1 :(得分:5)

你想为你的起居室准备一把新椅子,你想要自己制作。您浏览目录并订购一堆零件。当他们到达您的门时,您无法立即使用它们。您必须在工作室构建主席。经过一点肘部油脂,你可以坐下来。之后,您安装将椅子放在客厅,方便的地方坐下。

主席是您要使用的程序。它作为源代码到达你家。您可以通过将其编译为可运行的程序来构建它。您可以通过更容易使用来安装它。

答案 2 :(得分:1)

您引用的构建和安装命令来自setup.py文件吗?

Setup.py http://docs.python.org/2/distutils/setupscript.html

此文件由Python的第三方应用程序/扩展程序创建。他们不属于:

  1. Python源代码(一堆c文件等)
  2. 与Python捆绑在一起的Python库
  3. 当一个开发人员创建一个他想要共享给他的python库时,他创建了一个setup.py文件,这样就可以在任何有python的计算机上安装这个库。也许这是 MISSING STEP

    Setup.py sdist

    这会创建一个python模块(tar.gz文件)。这样做是将python库使用的所有文件复制到一个文件夹中。为模块创建一个setup.py文件并存档所有内容,以便可以在其他地方构建库。

    Setup.py build

    这将python模块构建回库(特别适用于此操作系统)。

    您可能知道,python库最初来自的计算机将与您正在安装的库不同。

    1. 它可能有不同版本的python
    2. 可能有不同的操作系统
    3. 它可能有不同的处理器/主板/等
    4. 由于上面列出的所有原因,代码将无法在另一台计算机上运行。因此setup.py sdist创建一个模块,其中只包含在另一台计算机上重建库所需的源文件。

      什么setup.py完全类似于makefile的功能。它编译源/创建库的所有东西。

      现在我们拥有了库中所需的所有文件的副本,它们可以在我们的计算机/操作系统上运行。

      Setup.py install

      很棒,我们拥有所需的所有文件。但他们不会工作。为什么?好吧,他们必须添加到Python,这就是原因。这就是安装的地方。现在我们有了库的本地副本,我们需要将它安装到python中,所以你可以这样使用它:

      import mycustomlibrary
      

      为了做到这一点,我们需要做几件事,包括:

      1. 将文件复制到我们的python版本中的库文件夹中。
      2. 确保可以使用import命令
      3. 导入库
      4. 运行此库的任何特殊安装说明。 (设置路径等)
      5. 这是任务中最复杂的部分。如果我们的图书馆使用BeautifulSoup怎么办?这不是Python库的一部分。我们必须安装它,以便我们的库和任何其他人可以使用BeautifulSoup而不会相互干扰。

        如果在其他地方安装了python,该怎么办?如果它安装在拥有许多用户的服务器上会怎样?

        安装透明地处理所有这些问题。是什么让我们刚刚建立的库能够运行。您所要做的就是使用import命令,安装处理其余部分。