Tại sao pip tải các phụ thuộc build trước khi cài đặt gói của bạn
Một bản phân phối mã nguồn có thể yêu cầu môi trường build và các phụ thuộc bổ sung. Những lần tải đó là một phần của quá trình cài đặt ngay cả khi kho lưu trữ đích đã có sẵn cục bộ.
Một kho lưu trữ mã nguồn cục bộ vẫn có thể cần truy cập mạng. Trước khi pip có thể cài đặt nó, pip có thể cần một build backend và các gói hỗ trợ để tạo ra một wheel.
Xác định vị trí lỗi trong trình tự này: lấy kho lưu trữ đích, cài đặt các yêu cầu build, thực thi backend, rồi cài đặt gói tạo thành. Các hook của backend có thể yêu cầu thêm yêu cầu build; chúng tách biệt với phụ thuộc thời gian chạy của gói.
Xác định thành phần mà pip vẫn cần
Tại “Installing build dependencies”, ghi lại gói và URL đã thất bại. Kiểm tra chỉ mục hiệu lực, tuyến proxy, ngữ cảnh tài khoản và mức tin cậy cho yêu cầu đó, dùng các thiết lập đã ghi tài liệu của phiên bản pip đã cài. Một lần tải thành công trước đó không chứng minh quyền truy cập tới mọi máy chủ hay môi trường của mọi trình trợ giúp. Các yêu cầu build công khai có thể dùng một ứng viên HTTP từ danh sách proxy HTTP khi tuyến đó được phép; giữ nguyên chỉ mục và chính sách tin cậy cần thiết. Các công thức tải trong quá khứ với setup.py có thể dùng tiến trình con khác.
Nếu một máy khác cài đặt thành công, trước tiên hãy so sánh các thành phần đã chọn. Phiên bản Python hoặc nền tảng của máy đó có thể có wheel dựng sẵn tương thích, trong khi máy này đã chọn bản phân phối mã nguồn nên cần công cụ build.
Cung cấp môi trường build một cách có chủ đích
--no-build-isolation chuyển trách nhiệm về các phụ thuộc build cần thiết sang cho bạn. Nó không sửa chữa xác thực proxy hay tin cậy chứng chỉ. Một backend cài cục bộ có thể che giấu yêu cầu bị thiếu hoặc không tương thích.
Đối với build ngoại tuyến có chủ đích, hãy chuẩn bị thành phần đích, các yêu cầu build và công cụ cần thiết cho dự án và nền tảng thông qua quy trình đã được phê duyệt. Một thư mục chỉ chứa kho lưu trữ mã nguồn là chưa đầy đủ. Giữ yêu cầu và giai đoạn thất bại trong báo cáo để có thể sửa tuyến hoặc bộ thành phần đã chuẩn bị.