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
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
Odpowiedzi:
Staraj się unikać setup.py
bezpośredniego dzwonienia , nie powie poprawnie pip, że zainstalowałeś swój pakiet.
Z pip install -e
:
W przypadku projektów lokalnych katalog „SomeProject.egg-info” jest tworzony względem ścieżki projektu. Jest to jedna z zalet w porównaniu z samym użyciem
setup.py develop
, które tworzy „egg-info” bezpośrednio w stosunku do bieżącego katalogu roboczego.
Więcej: docs
Przeczytaj także dokumentację setuptools .
Jeszcze jedna różnica: pip install -e
używa koła, podczas gdy
python setup.py develop
go nie używa.
Dzięki install
, można osiągnąć ten sam problem przy użyciu
pip install -e /path/to/package --no-use-wheel
Więcej informacji o kołach: koła Python
--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ści install_requires
w setup.py
, a następnie pip install -e .
instaluje zależności z pip, podczas gdy python setup.py develop
można zainstalować z easy_install
, i może powodować problemy z ponownym: „jajko-info”, jak wspomniano powyżej. W przypadku install-requires
używania dependency_links
z niestandardowymi adresami URL git, z dołączonymi identyfikatorami jaj, może to być szczególnie denerwujące.
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 ).