这可能是一个非常容易和直接回答的问题,但是,尽管有几年的编程经验,出于某种原因,我仍然没有完全了解“构建”意味着什么的确切概念然后安装”。我知道如何使用它们并使用它们很多,但不知道在后台发生的确切过程......
我浏览了网页,维基百科等...但是没有一个简单的答案,我也找不到。
我试图理解的一个很好的例子是向python添加新模块: 的 http://docs.python.org/2/install/index.html#how-installation-works
它说 “构建命令负责将文件安装到构建目录中”
然后对于安装命令: “运行构建命令后(无论是显式运行,还是install命令都为您执行),install命令的工作相对简单:all它必须做的是将build / lib(或build / lib.plat)下的所有内容复制到您选择的安装目录。“
基本上所说的是: 1.将所有内容复制到构建目录,然后...... 2.将所有内容复制到安装目录
在解释中某处缺少一个过程...恭维?
会欣赏一些直截了当但不太狡猾的答案,但要尽可能详细地说明:)
希望我不是唯一一个不知道详细答案的人......
谢谢!
Aivoric
答案 0 :(得分:6)
构建意味着在沙箱位置将源代码编译为二进制文件,如果出现问题,它将不会影响您的系统,例如源代码目录中的build
子目录。
安装意味着将构建的二进制文件从build
子目录复制到系统路径中的一个位置,以便于访问它们。这很少是通过直接复制命令完成的,而且通常由某个包管理器完成,它可以跟踪创建的文件并在以后轻松卸载它们。
通常,构建命令会执行所需的所有编译和链接,但Python是一种解释型语言,因此如果库中只有纯Python文件,那么构建中就没有编译步骤。实际上,所有内容都被复制到构建目录,然后再次复制到最终位置。只有当库依赖于用其他语言编写的需要编译的代码时,才会有编译步骤。
答案 1 :(得分:5)
你想为你的起居室准备一把新椅子,你想要自己制作。您浏览目录并订购一堆零件。当他们到达您的门时,您无法立即使用它们。您必须在工作室构建主席。经过一点肘部油脂,你可以坐下来。之后,您安装将椅子放在客厅,方便的地方坐下。
主席是您要使用的程序。它作为源代码到达你家。您可以通过将其编译为可运行的程序来构建它。您可以通过更容易使用来安装它。
答案 2 :(得分:1)
您引用的构建和安装命令来自setup.py文件吗?
Setup.py (http://docs.python.org/2/distutils/setupscript.html)
此文件由Python的第三方应用程序/扩展程序创建。他们不属于:
当一个开发人员创建一个他想要共享给他的python库时,他创建了一个setup.py文件,这样就可以在任何有python的计算机上安装这个库。也许这是 MISSING STEP
Setup.py sdist
这会创建一个python模块(tar.gz文件)。这样做是将python库使用的所有文件复制到一个文件夹中。为模块创建一个setup.py文件并存档所有内容,以便可以在其他地方构建库。
Setup.py build
这将python模块构建回库(特别适用于此操作系统)。
您可能知道,python库最初来自的计算机将与您正在安装的库不同。
由于上面列出的所有原因,代码将无法在另一台计算机上运行。因此setup.py sdist
创建一个模块,其中只包含在另一台计算机上重建库所需的源文件。
什么setup.py完全类似于makefile的功能。它编译源/创建库的所有东西。
现在我们拥有了库中所需的所有文件的副本,它们可以在我们的计算机/操作系统上运行。
Setup.py install
很棒,我们拥有所需的所有文件。但他们不会工作。为什么?好吧,他们必须添加到Python,这就是原因。这就是安装的地方。现在我们有了库的本地副本,我们需要将它安装到python中,所以你可以这样使用它:
import mycustomlibrary
为了做到这一点,我们需要做几件事,包括:
import
命令这是任务中最复杂的部分。如果我们的图书馆使用BeautifulSoup怎么办?这不是Python库的一部分。我们必须安装它,以便我们的库和任何其他人可以使用BeautifulSoup而不会相互干扰。
如果在其他地方安装了python,该怎么办?如果它安装在拥有许多用户的服务器上会怎样?
安装透明地处理所有这些问题。是什么让我们刚刚建立的库能够运行。您所要做的就是使用import
命令,安装处理其余部分。