Mô-đun cung cấp chức năng tạo tệp mã byte từ tệp nguồn và một chức năng khác được sử dụng khi tệp nguồn mô-đun được gọi dưới dạng tập lệnh Show Mặc dù không thường xuyên cần thiết, chức năng này có thể hữu ích khi cài đặt các mô-đun để sử dụng chung, đặc biệt nếu một số người dùng có thể không có quyền ghi các tệp bộ đệm mã byte trong thư mục chứa mã nguồn ngoại lệ py_compile. PyCompileErrorNgoại lệ xuất hiện khi xảy ra lỗi trong khi cố gắng biên dịch tệp py_compile. biên dịch(tệp , cfile=Không có , dfile=Không có , doraise=Sai , tối ưu hóa=- 1 , invalidation_mode=PycInvalidationMode. DẤU THỜI GIAN , yên lặng=0)Biên dịch tệp nguồn thành mã byte và ghi tệp bộ đệm mã byte. Mã nguồn được tải từ tệp có tên tệp. Mã byte được ghi vào cfile, mặc định là đường dẫn PEP 3147/PEP 488, kết thúc bằng Các đối số doraise và silence xác định cách xử lý lỗi trong khi biên dịch tệp. Nếu yên tĩnh là 0 hoặc 1 và doraise là sai, hành vi mặc định được bật. một chuỗi lỗi được ghi vào Nếu đường dẫn mà cfile trở thành (được chỉ định rõ ràng hoặc được tính toán) là một liên kết tượng trưng hoặc tệp không thông thường, sẽ được nâng lên. Điều này nhằm cảnh báo rằng quá trình nhập sẽ biến các đường dẫn đó thành các tệp thông thường nếu nó được phép ghi các tệp được biên dịch theo byte vào các đường dẫn đó. Đây là tác dụng phụ của việc nhập bằng cách đổi tên tệp để đặt tệp được biên dịch theo byte cuối cùng vào vị trí nhằm ngăn các sự cố ghi tệp đồng thời tối ưu hóa kiểm soát mức độ tối ưu hóa và được chuyển đến chức năng tích hợp. Giá trị mặc định của invalidation_mode phải là một thành viên của enum và kiểm soát cách thức bộ đệm mã byte được tạo bị vô hiệu hóa khi chạy. Giá trị mặc định là nếu biến môi trường Đã thay đổi trong phiên bản 3. 2. Đã thay đổi giá trị mặc định của cfile thành tuân thủ PEP 3147. Mặc định trước đó là tệp + Đã thay đổi trong phiên bản 3. 4. Đã thay đổi mã để sử dụng cho việc ghi tệp bộ đệm mã byte. Điều này có nghĩa là ngữ nghĩa tạo/ghi tệp hiện khớp với những gì hiện có, e. g. quyền, ngữ nghĩa ghi và di chuyển, v.v. Cũng đã thêm cảnh báo được nêu ra nếu cfile là một liên kết tượng trưng hoặc tệp không thông thường. Đã thay đổi trong phiên bản 3. 7. Thông số invalidation_mode đã được thêm vào như được chỉ định trong PEP 552. Nếu biến môi trường Đã thay đổi trong phiên bản 3. 7. 2. Biến môi trường Đã thay đổi trong phiên bản 3. 8. Tham số yên tĩnh đã được thêm vào. lớp py_compile. Chế độ vô hiệu hóa PycBảng liệt kê các phương thức khả thi mà trình thông dịch có thể sử dụng để xác định xem tệp mã byte có được cập nhật với tệp nguồn hay không. Tệp Mới trong phiên bản 3. 7 DẤU THỜI GIANTệp Tệp Giống như, tệp Tùy chọn này hữu ích khi Giao diện dòng lệnhMô-đun này có thể được gọi dưới dạng tập lệnh để biên dịch một số tệp nguồn. Các tệp có tên trong tên tệp được biên dịch và mã byte kết quả được lưu vào bộ đệm theo cách thông thường. Chương trình này không tìm kiếm cấu trúc thư mục để định vị các tệp nguồn; . Trạng thái thoát là khác không nếu một trong các tệp không thể được biên dịch Đối số vị trí là các tệp để biên dịch. Nếu Tại sao. Tệp PYC được tạo bằng Python?Khi tệp nguồn Python (mô-đun) được nhập trong quá trình thực thi lần đầu tiên , tùy chọn thích hợp. tệp pyc được tạo tự động. Nếu cùng một mô-đun được nhập lại, thì mô-đun đã được tạo. tập tin pyc được sử dụng.
Python có cần PYC để chạy không?tệp pyc không được biên dịch theo nghĩa chặt chẽ nhất của thuật ngữ, vì nó không phải là mã máy gốc. Như @tomdachi đã viết, mã byte dành riêng cho python (rất giống với Java. class), đó là lý do nó vẫn cần trình thông dịch python để thực thi . trên thực tế, pyc chỉ được tạo khi bạn nhập tệp py.
tôi có thể xóa. Tệp PYC?các tệp pyc từ một thư mục. Bạn có thể sử dụng lệnh find (trên OS X và Linux) để định vị tất cả. các tệp pyc, sau đó sử dụng tùy chọn xóa để xóa chúng . Rõ ràng, điều này có thể được sử dụng cho bất kỳ loại tệp nào bạn muốn xóa, không chỉ.
tôi có nên kiểm tra. Tệp PYC?Các tệp này là các phiên bản được biên dịch của mã đã có trong repo, để Python có thể thực thi mã nhanh hơn. Vì chúng là kết quả tính toán trực tiếp của mã nguồn thực tế nên không có ích lợi gì khi kiểm tra chúng - chúng chỉ cần được cập nhật mỗi khi mã nguồn . |