2016-09-13 16 views
5

Tôi cần gửi phiên bản đã biên dịch của tập lệnh python và có thể chứng minh (sử dụng băm) mà tệp được biên dịch thực sự giống như tệp gốc.Bản dựng có thể tái tạo trong python

gì chúng tôi sử dụng cho đến nay là một đơn giản:

find . -name "*.py" -print0 | xargs -0 python2 -m py_compile 

Vấn đề là đây không phải là tái sản xuất (không chắc chắn những yếu tố biến động là gì nhưng 2 hành quyết sẽ không cho chúng ta những pyc cùng cho cùng python file) và buộc chúng tôi luôn gửi cùng phiên bản đã biên dịch thay vì chỉ có thể cung cấp kịch bản lệnh xây dựng cho bất kỳ ai để tạo phiên bản được biên dịch mới.

Có cách nào để đạt được điều đó không?

Cảm ơn

+0

Biến động mức biên dịch có thể được mong đợi. Điều gì là sai với các phiên bản biên dịch vận chuyển? – Andrey

+0

1) os cụ thể 2) chính xác python phiên bản 3) biến động liên quan đến thời gian – Andrey

+0

Chúng tôi cần lưu trữ tệp nén chứa phiên bản đã biên dịch trên máy chủ/ổ đĩa, duy trì bản sao của từng phiên bản và loại nhức đầu mà tôi muốn tránh khi sử dụng git cho lưu trữ mã và tập lệnh xây dựng. Sẽ dễ dàng hơn nếu tôi chỉ có thể kiểm tra ở bản sửa đổi cụ thể, làm lại bản dựng và kiểm tra xem nó có giống nhau hay không. –

Trả lời

8

Các tệp Python biên dịch bao gồm số ma thuật bốn byte và thời gian biên dịch bốn byte. Điều này có thể giải thích sự khác biệt mà bạn đang thấy.

Nếu bạn bỏ qua các byte 5-8 từ quá trình kiểm tra thì bạn sẽ thấy tổng kiểm tra liên tục cho một phiên bản Python nhất định.

Định dạng của tệp .pyc được đưa ra trong this blog post bởi Ned Batchelder.

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