2013-11-03 18 views
6

Đây có lẽ là câu hỏi có câu trả lời rất dễ dàng và đơn giản, tuy nhiên, mặc dù có vài năm kinh nghiệm lập trình, vì một lý do nào đó tôi vẫn không hiểu khái niệm chính xác về "xây dựng" và sau đó "cài đặt, dựng lên". Tôi biết cách sử dụng chúng và đã sử dụng chúng rất nhiều, nhưng không có ý tưởng về các quy trình chính xác xảy ra trong nền ...Xây dựng và cài đặt là gì?

Tôi đã xem qua web, wikipedia, v.v ... nhưng không có một câu trả lời đơn giản cho nó, tôi cũng không thể tìm thấy câu trả lời ở đây.

Một ví dụ điển hình, mà tôi đã cố gắng để hiểu, được bổ sung thêm các module mới để trăn: http://docs.python.org/2/install/index.html#how-installation-works

Nó nói rằng "xây dựng lệnh có trách nhiệm đưa các tập tin cài đặt vào một thư mục build "

Và sau đó cho các cài đặt lệnh: " Sau khi xây dựng lệnh chạy (cho dù bạn chạy nó một cách rõ ràng, hoặc cài đặt lệnh nào đó cho bạn), công việc của lệnh cài đặt tương đối đơn giản: tất cả những gì nó phải làm là sao chép mọi thứ trong build/lib (hoặc build/lib.plat) vào thư mục cài đặt bạn đã chọn. "

Vì vậy, về cơ bản điều này được nói là: 1. Sao chép tất cả mọi thứ vào thư mục xây dựng và sau đó ... 2. Sao chép tất cả mọi thứ vào thư mục cài đặt

Có phải là một quá trình mất tích ở đâu đó trong giải thích ... complilation?

Sẽ đánh giá cao một số câu trả lời đơn giản không phải là quá hay giận nhưng chi tiết càng nhiều càng tốt :)

Hy vọng rằng tôi không phải là người duy nhất không biết câu trả lời chi tiết này ...

Cảm ơn !

Aivoric

+0

Mọi câu trả lời? :) – Aivoric

Trả lời

6

Building nghĩa biên dịch mã nguồn để nhị phân ở một vị trí sandbox nơi mà nó sẽ không ảnh hưởng đến hệ thống của bạn nếu họ gặp khó khăn, giống như một thư mục con build bên trong thư mục mã nguồn.

Cài đặt nghĩa là sao chép các tệp nhị phân được xây dựng từ thư mục con build vào một vị trí trong đường dẫn hệ thống của bạn, nơi chúng dễ dàng truy cập. Điều này hiếm khi được thực hiện bởi lệnh sao chép thẳng và thường được thực hiện bởi một số trình quản lý gói có thể theo dõi các tệp được tạo và dễ dàng gỡ cài đặt chúng sau này.

Thông thường, lệnh xây dựng thực hiện tất cả việc biên dịch và liên kết cần thiết, nhưng Python là một ngôn ngữ diễn giải, vì vậy nếu chỉ có các tệp Python thuần túy trong thư viện, không có bước biên dịch trong bản dựng. Thật vậy, tất cả mọi thứ được sao chép vào một thư mục xây dựng, và sau đó sao chép một lần nữa đến một vị trí cuối cùng. Chỉ khi thư viện phụ thuộc vào mã được viết bằng các ngôn ngữ khác cần được biên dịch, bạn sẽ có một bước biên dịch.

+2

Python biên dịch; '.pyc' (tệp bộ nhớ cache bytecode) được tạo trong bước xây dựng. –

+3

Có, chắc chắn, nhưng tôi nghĩ giải thích rằng sẽ làm phức tạp câu trả lời. –

5

Bạn muốn có một chiếc ghế mới cho phòng khách của mình và bạn muốn tự làm nó. Bạn duyệt qua một cửa hàng và đặt hàng một đống các bộ phận. Khi họ đến cửa của bạn, bạn không thể sử dụng chúng ngay lập tức. Bạn phải xây dựng ghế tại hội thảo của bạn. Sau một chút mỡ khuỷu tay, bạn có thể ngồi xuống.Sau đó, bạn cài đặt ghế trong phòng khách của bạn, ở một nơi thuận tiện để ngồi xuống.

Ghế là chương trình bạn muốn sử dụng. Nó đến nhà bạn như là mã nguồn. Bạn xây dựng nó bằng cách biên dịch nó thành một chương trình chạy được. Bạn cài đặt nó bằng cách làm cho nó dễ sử dụng hơn.

+2

Bạn có thể làm cho nó "Sau một chút mỡ khuỷu tay, bạn hãy thử ngồi trong nó và xem nó thoải mái như thế nào, vv (* thử nghiệm *)." –

1

Lệnh xây dựng và cài đặt mà bạn đang đề cập đến đến từ tệp setup.py phải không?

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

Tập tin này được tạo ra bởi các ứng dụng bên thứ 3/extensions của Python. Họ không phải là một phần của:

  1. mã Python nguồn (bó của tập tin c, vv)
  2. thư viện Python mà đi kèm với Python

Khi một nhà phát triển tạo ra một thư viện cho python rằng ông muốn để chia sẻ với thế giới, anh ta tạo một tệp setup.py để thư viện có thể được cài đặt trên bất kỳ máy tính nào có python. Có lẽ đây là BƯỚC MISSING

Setup.py sdist

này tạo ra một mô-đun python (các file tar.gz). Điều này làm là sao chép tất cả các tập tin được sử dụng bởi thư viện python vào một thư mục. Tạo một tệp setup.py cho mô-đun và lưu trữ mọi thứ để thư viện có thể được xây dựng ở một nơi khác.

setup.py xây dựng

này xây dựng các mô-đun python trở lại vào một thư viện (đặc biệt cho hệ điều hành này).

Như bạn có thể biết, máy tính thư viện python ban đầu đến từ sẽ khác với thư viện mà bạn đang cài đặt.

  1. Nó có thể có một phiên bản khác của python
  2. Nó có thể có một hệ điều hành khác nhau
  3. Nó có thể có một bộ xử lý khác nhau/bo mạch chủ/etc

Đối với tất cả những lý do được liệt kê phía trên mã sẽ không hoạt động trên máy tính khác. Vì vậy, setup.py sdist tạo một mô-đun chỉ với các tệp nguồn cần thiết để xây dựng lại thư viện trên máy tính khác.

Việc setup.py thực hiện chính xác tương tự như những gì một makefile sẽ làm. Nó biên dịch các nguồn/tạo ra các thư viện tất cả những thứ đó.

Bây giờ chúng tôi có một bản sao của tất cả các tệp chúng tôi cần trong thư viện và chúng sẽ hoạt động trên máy tính/hệ điều hành của chúng tôi.

setup.py cài đặt

lớn chúng tôi có tất cả các file cần thiết. Nhưng chúng sẽ không hoạt động. Tại sao? Vâng họ phải được thêm vào Python đó là lý do tại sao. Đây là nơi cài đặt đến.Bây giờ chúng ta có một bản sao cục bộ của thư viện chúng ta cần phải cài đặt nó vào python vì vậy bạn có thể sử dụng nó như vậy:

import mycustomlibrary 

Để làm được điều này chúng ta cần phải làm một vài điều bao gồm:

  1. Sao chép tệp vào thư mục thư viện của chúng trong phiên bản python của chúng tôi.
  2. Đảm bảo bạn có thể nhập thư viện bằng cách sử dụng import lệnh
  3. Chạy bất kỳ hướng dẫn cài đặt đặc biệt nào cho thư viện này. (thiết lập đường dẫn, v.v.)

Đây là phần phức tạp nhất của tác vụ. Nếu thư viện của chúng tôi sử dụng BeautifulSoup thì sao? Đây không phải là một phần của Thư viện Python. Chúng tôi sẽ phải cài đặt nó theo cách sao cho thư viện của chúng tôi và bất kỳ người nào khác có thể sử dụng BeautifulSoup mà không can thiệp lẫn nhau.

Còn nếu python được lắp đặt ở đâu đó khác? Điều gì sẽ xảy ra nếu nó được cài đặt trên một máy chủ với nhiều người dùng?

Cài đặt xử lý tất cả các sự cố này một cách minh bạch. Điều gì là làm cho thư viện mà chúng ta vừa xây dựng có thể chạy. Tất cả những gì bạn phải làm là sử dụng lệnh import, cài đặt sẽ xử lý phần còn lại.

Các vấn đề liên quan