Czy jest jakaś znacząca różnica między
pip install -e /path/to/mypackage
i wariant setuptools?
python /path/to/mypackage/setup.py develop
python
pip
setuptools
PeterE
źródło
źródło
Odpowiedzi:
Staraj się unikać
setup.py
bezpośredniego dzwonienia , nie powie poprawnie pip, że zainstalowałeś swój pakiet.Z
pip install -e
:Więcej: docs
Przeczytaj także dokumentację setuptools .
źródło
Jeszcze jedna różnica:
pip install -e
używa koła, podczas gdypython setup.py develop
go nie używa.
Dzięki
install
, można osiągnąć ten sam problem przy użyciupip install -e /path/to/package --no-use-wheel
Więcej informacji o kołach: koła Python
źródło
--no-use-wheel
DEPRECATED na rzecz--no-binary :all:
Kolejną różnicą, które mogą sprzyjać
pip install -e
jest to, że jeśli projekt ma w zależnościinstall_requires
wsetup.py
, a następniepip install -e .
instaluje zależności z pip, podczas gdypython setup.py develop
można zainstalować zeasy_install
, i może powodować problemy z ponownym: „jajko-info”, jak wspomniano powyżej. W przypadkuinstall-requires
używaniadependency_links
z niestandardowymi adresami URL git, z dołączonymi identyfikatorami jaj, może to być szczególnie denerwujące.źródło
pip install -e .
, zasadniczo tworzy dowiązanie symboliczne w odpowiednim katalogu pakietów witryn Pythona, aby wskazać kopię roboczą. Ponieważ zmiany kodu są wprowadzane do kopii roboczej, jest to natychmiast odzwierciedlane w „zainstalowanej” wersji, więc nie ma potrzeby ponownego uruchamiania poleceń instalacyjnych w trakcie. Jest to przydatne przede wszystkim do tworzenia w repozytorium, które reprezentuje pakiet do zainstalowania, ale może być również przydatne np. Do pisania kolekcji modułów z tylko importami bezwzględnymi itp.Jeszcze inna różnica: kiedy uruchamiasz
python setup.py develop
wersję, która jest uważana za wersję wstępną (być może dlatego, że uruchamiasz ją z klonu git, gdy nie sprawdzałeś wydania), włączysz instalację wstępnych wersji swoich zależności . Z drugiej strony,pip install --editable
musisz przejść--pre
jawnie, jeśli chcesz te wersje wstępne.(Zobacz dziennik CI z przypadkowo użytymi wersjami wstępnymi i porównaj go ze stałą kompilacją tutaj ).
źródło