Câu trả lời:
các gói dist là một quy ước dành riêng cho Debian cũng có trong các dẫn xuất của nó, như Ubuntu. Các mô-đun được cài đặt cho các gói xa khi chúng đến từ trình quản lý gói Debian vào vị trí này:
/usr/lib/python2.7/dist-packages
Vì easy_install
và pip
được cài đặt từ trình quản lý gói, họ cũng sử dụng các gói dist, nhưng họ đặt các gói ở đây:
/usr/local/lib/python2.7/dist-packages
Từ Wiki Python Debian :
gói dist thay vì gói trang web. Phần mềm Python của bên thứ ba được cài đặt từ các gói Debian đi vào các gói dist, không phải gói trang. Điều này là để giảm xung đột giữa Python hệ thống và mọi bản dựng Python từ nguồn bạn có thể cài đặt thủ công.
Điều này có nghĩa là nếu bạn tự cài đặt Python từ nguồn, nó sẽ sử dụng thư mục gói trang. Điều này cho phép bạn tách riêng hai cài đặt, đặc biệt là khi Debian và Ubuntu dựa vào phiên bản hệ thống của Python cho nhiều tiện ích hệ thống.
dist-packages
là thư mục dành riêng cho debian nơi apt
bạn bè cài đặt nội dung của họ và site-packages
là pip
thư mục chuẩn .
Vấn đề là - điều gì xảy ra khi các phiên bản khác nhau của cùng một gói có mặt trong các thư mục khác nhau?
Giải pháp của tôi cho vấn đề này là tạo dist-packages
một liên kết tượng trưng đến site-packages
:
for d in $(find $WORKON_HOME -type d -name dist-packages); do
pushd $d
cd ..
if test -d dist-packages/__pycache__; then
mv -v dist-packages/__pycache__/* site-packages/__pycache__/
rmdir -v dist-packages/__pycache__
fi
mv -v dist-packages/* site-packages/
rmdir -v dist-packages
ln -sv site-packages dist-packages
popd
done
(nếu bạn không sử dụng công cụ gnu, hãy xóa -v
tùy chọn).