2013-11-03 84 views
6

這可能是一個非常簡單直接的答案,儘管有幾年編程經驗,但由於某些原因,我仍然不完全明白「構建」的含義,然後「安裝」。我知道如何使用它們,並使用它們很多,但不知道背景中發生的確切過程...什麼是構建和安裝?

我看過網絡,維基百科等...但沒有一個簡單的答案,我在這裏也找不到。

一個很好的例子,我想明白了,是增加新的模塊,以蟒蛇: http://docs.python.org/2/install/index.html#how-installation-works

它說,「構建命令是負責將文件安裝到一個build目錄「

然後install命令:」 build命令運行後(不管你運行它明確,或install命令會爲你),該工作install命令相對簡單:只需將build/lib(或build/lib.plat)下的所有內容複製到您選擇的安裝目錄中即可。「

所以基本上這是什麼意思是: 1.複製一切build目錄,然後... 2.複製一切安裝目錄

必須有在某處失蹤過程解釋... complilation?

希望得到一些簡單的不能太易怒的答案,但儘可能詳細地:)

希望我不是唯一一個誰不知道詳細答案,這...

謝謝!

Aivoric

+0

任何答案? :) – Aivoric

回答

6

建築物,是指源代碼編譯爲二進制在沙箱中的位置,其中,如果出現錯誤,比如源代碼目錄內build子目錄,它不會影響你的系統。

安裝意味着將構建的二進制文件從build子目錄複製到系統路徑中易於訪問的位置。這很少通過直接複製命令完成,而且通常由一些軟件包管理器完成,後者可以跟蹤創建的文件並在以後輕鬆卸載它們。

通常,構建命令會執行所有需要的編譯和鏈接,但Python是一種解釋型語言,因此如果庫中只有純Python文件,則構建中不會有編譯步驟。事實上,所有內容都被複制到構建目錄中,然後再次複製到最終位置。只有當庫依賴於需要編譯的其他語言編寫的代碼時,纔會有編譯步驟。

+2

Python確實編譯; '.pyc'(字節碼緩存文件)在構建步驟中創建。 –

+3

是的,當然,但我認爲解釋會使答案複雜化。 –

5

你想爲你的客廳添置一把新椅子,而且你想自己做。您瀏覽目錄並訂購一堆零件。當他們到達你的門時,你不能立即使用它們。你必須構建在你的車間主持。經過一點肘部脂肪後,你可以坐下來。之後,你安裝在你的客廳的椅子,在一個方便的地方坐下。

椅子是您想要使用的程序。它作爲源代碼到達你的房子。通過將其編譯爲可運行的程序來構建它。您通過更易於使用來安裝它。

+2

你可以讓它「在一點肘部油脂後,你試着坐在裏面,看看它有多舒服,等等(*測試*)。」 –

1

您引用的構建和安裝命令來自setup.py文件嗎?

Setup.pyhttp://docs.python.org/2/distutils/setupscript.html

該文件是由第三方應用程序/ Python中的擴展創建。他們不是的一部分:附帶的Python捆綁

  1. Python源代碼(一串C文件等)
  2. Python庫

當開發人員做的蟒蛇,他希望圖書館要共享世界,他創建了一個setup.py文件,以便該庫可以安裝在任何具有python的計算機上。也許這就是缺少的步驟

Setup.py sdist

這將創建一個Python模塊(tar.gz的文件)。它所做的就是將python庫使用的所有文件複製到一個文件夾中。爲模塊創建一個setup.py文件並存檔所有內容,以便可以在其他位置構建該庫。

的setup.py建立

此生成Python模塊回庫(專門爲此OS)。

正如您所知,python庫最初來自的計算機將與您正在安裝的庫不同。

  1. 它可能有一個不同的版本蟒
  2. 的它可能有一個不同的操作系統
  3. 它可能具有不同的處理器/主板/等

對於上面所列出的所有原因代碼將無法在另一臺計算機上工作。因此setup.py sdist創建一個模塊,只有在另一臺計算機上重建庫所需的源文件。

setup.py的確與makefile的功能類似。它編譯所有東西的源代碼/創建庫。

現在我們有了我們在庫中需要的所有文件的副本,它們將在我們的計算機/操作系統上工作。

的setup.py安裝

大,我們需要的所有文件。但他們不會工作。爲什麼?那麼他們必須被添加到Python,這就是爲什麼。這是安裝進來的地方。現在,我們有庫的本地副本,我們需要把它安裝到蟒蛇,所以你可以使用它像這樣:

import mycustomlibrary 

爲了做到這一點,我們需要做的幾件事包括:

  1. 將文件複製到我們版本的python中的庫文件夾。
  2. 確保庫可以使用import命令導入
  3. 運行此庫的任何特殊安裝說明。 (鋪設路徑等)

這是該任務中最複雜的部分。如果我們的圖書館使用BeautifulSoup會怎樣?這不是Python庫的一部分。我們必須安裝它,以便我們的圖書館和其他人可以使用BeautifulSoup而不會相互干擾。

另外如果python安裝在其他地方呢?如果它安裝在有許多用戶的服務器上呢?

安裝可以透明地處理所有這些問題。什麼是做我們剛建立的圖書館能夠運行。你所要做的就是使用import命令,安裝處理剩下的事情。