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.pybezpoś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 -euż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-wheelDEPRECATED na rzecz--no-binary :all:
Kolejną różnicą, które mogą sprzyjać pip install -ejest to, że jeśli projekt ma w zależności install_requiresw setup.py, a następnie pip install -e .instaluje zależności z pip, podczas gdy python setup.py developmożna zainstalować z easy_install, i może powodować problemy z ponownym: „jajko-info”, jak wspomniano powyżej. W przypadku install-requiresużywania dependency_linksz 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 developwersję, 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 --editablemusisz przejść --prejawnie, 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 ).