Tôi muốn cài đặt một số gói vào thư mục của bên thứ ba site-packages
(ngoài vị trí hệ thống chuẩn). Có cách nào để thiết lập này sao cho các tập tin .pth trong đó được tôn trọng?Tạo thư mục gói trang web phụ (và tải các gói từ tệp .pth trong đó)
Bối cảnh: Tôi đang sử dụng OS X, virtualenv và homebrew. Có một vài gói (đặc biệt là wxPython trong trường hợp của tôi) mà không cài đặt độc đáo thông qua pip vào virtualenv. Trong những trường hợp này, có những gói homebrew hoạt động thay cho chúng. Homebrew tạo thư mục gói trang web thứ ba trong /usr/local/lib/python2.7
. Tôi muốn chỉ đơn giản là trỏ đến thư mục này và để bảo trì tất cả các mục có dưới sự kiểm soát của brew
. Có vẻ như, tuy nhiên, điều này là không thể.
- Gắn thêm đường dẫn qua
$PYTHONPATH
không tải tệp .pth. (Should Python 2.6 on OS X deal with multiple easy-install.pth files in $PYTHONPATH?) - Python không cho phép sử dụng tệp .pth làm tổ hoặc đệ quy. (Nested .pth Files or Loading Extra site-dirs from a Network)
- Trình bao bọc cho virtualenv
add2virtualenv
thêm một số thông tin bổ sung vào tệp .pth ngoài việc chỉ có thư mục được liệt kê, nhưng tôi tin nó đơn giản là sắp xếp lại danh sách đường dẫn.
Tôi chắc chắn không phải là người duy nhất quan tâm đến vấn đề này. Tôi muốn đặt cược một số lượng lớn các câu hỏi chung 'không làm việc' và các bài đăng trực tuyến mà tôi đã tình cờ gặp phải liên quan đến vấn đề này. Có một giải pháp tốt?
Do sitecustomize.py hoặc usercustomize.py tự động được chạy khi khởi động? Chỉnh sửa: [có, có họ làm] (http://docs.python.org/library/site.html). Cảm ơn! –
@MattB. Có, đã chỉnh sửa câu trả lời của tôi với một số thông tin bổ sung. Tài liệu này xuất phát từ đầu trang mô-đun trang mà tôi đã liên kết trong câu trả lời của tôi. –
Tôi vẫn không hiểu đầy đủ về cách thức làm việc, nhưng: (1) không nên bởi additionalitedir ('/ usr/local'), tức là tiền tố thay thế (nhưng nó không hoạt động đối với tôi), hoặc (2) additedir ('/ usr/local/lib/python2.7/site-packages') đường dẫn để nối thêm, và trong trường hợp thứ hai đó, tại sao không chỉ thêm nó vào PYTHONPATH? –