Odpowiedzi:
dist-Package to specyficzna dla Debiana konwencja, która występuje również w jej pochodnych, takich jak Ubuntu. Moduły są instalowane w pakietach dystrybucyjnych, gdy pochodzą z menedżera pakietów Debiana w tej lokalizacji:
/usr/lib/python2.7/dist-packages
Ponieważ easy_install
i pip
są instalowane z menedżera pakietów, używają również pakietów dist, ale umieszczają pakiety tutaj:
/usr/local/lib/python2.7/dist-packages
pakiety dist zamiast pakietów site. Zewnętrzne oprogramowanie Python instalowane z pakietów Debiana przechodzi na pakiety dist, a nie pakiety site. Ma to na celu zmniejszenie konfliktu między systemowym Pythonem a dowolną kompilacją Pythona ze źródła, którą można zainstalować ręcznie.
Oznacza to, że jeśli ręcznie zainstalujesz Python ze źródła, użyje on katalogu pakietów witryny. Pozwala to zachować osobne instalacje, zwłaszcza że Debian i Ubuntu polegają na systemowej wersji Pythona dla wielu narzędzi systemowych.
dist-packages
jest katalogiem specyficznym dla Debiana, w którym apt
znajomi instalują swoje rzeczy, i site-packages
jest standardempip
katalogiem .
Problem w tym, co się dzieje, gdy różne wersje tego samego pakietu są obecne w różnych katalogach?
Moim rozwiązaniem tego problemu jest utworzenie dist-packages
dowiązania symbolicznego do 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
(jeśli nie korzystasz z narzędzi GNU, usuń -v
opcję).