Czy może to być ta sama nazwa, co repozytorium? Czy sprawy mają znaczenie?
CMCDragonkai
14
„Katalog, który jest wyewidencjonowywany”? Więc mam wpisać nazwę oddziału? Zrobić coś?
Chris,
2
Jeśli utworzyłeś niestandardowy pakiet Pythona, po uruchomieniu setuptools katalog o nazwie project-name.egg-info/top_level.txtpowinien zostać utworzony. Użyj zawartości tego pliku jako wartości eggparametru.
dspacejs
2
Wydaje się, że nie wiem, czy to egg=...ustawienie ma znaczenie. Pakiet, który instaluję, ma wiele wpisów w pliku top_level.txt. Eksperymentowałem z dopasowaniem go do namekwarg, którego używa skrypt, setup.pyale także z dowolną wartością. Wyniki wydają się być takie same. Zwróć uwagę, że instaluję przy użyciu pip install https://...składni, która nie wymaga -e.
Co to znaczy „więc pip wie, czego się spodziewać pod tym adresem URL?” Czy jest coś innego niż #egg, które można dołączyć do takiego adresu URL?
Lorin Hochstein
Właściwie podoba mi się odpowiedź Willa z pip install -h, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)nie jestem pewien, czy jest używana gdzie indziej ...
Zwykle instalujemy pakiety Pythona z Pypi, więc podajesz TYLKO nazwę i wersję pakietu (lub zakłada się najnowszą wersję, jeśli nie określisz). Następnie Pypi wyszukuje, które jajko chcesz i pip instaluje. pip install celeryzainstaluje najnowsze opublikowane jajko i pip install celery[redis]zainstaluje inne jajko, które zawiera ten sam pakiet selera, a także zainstaluje najnowsze jajka z wszystkich pakietów wymienionych jako zależności redis w pliku setup.py selera.
W przypadku ścieżek git i gitlab należy określić /{user|group}/{repository}.git@{tag}#egg={package-name}. istnieje różnica między #egg=celeryi #egg=celery[redis], ale oba będą pochodzić z tego samego kodu źródłowego.
„znacznik” może być również odgałęzieniem lub skrótem zatwierdzenia oprócz rzeczywistego znacznika. Zakłada się, że mastertak jest, jeśli nie określisz.
na przykład git+https://github.com/celery/celery.git#egg=celery==4.3.0wyewidencjonuje gałąź master i ją zainstaluje. Nawet jeśli podałeś numer wersji, nie jest on brany pod uwagę podczas instalacji. NUMER WERSJI JEST IGNOROWANY
Podczas instalacji przez git lub inne adresy URL VCS będziesz chciał znaleźć tag lub hash wersji, której potrzebujesz. Na przykład, git+https://github.com/celery/[email protected]#egg=celeryktóry pobierze zatwierdzenie oznaczone „v4.3.0”, a następnie zainstaluje pakiet z tego kodu źródłowego. Zakładając, że opiekunowie nie rażąco błędnie otagowali swoje repozytoria, możesz uzyskać taką wersję, jaką chcesz.
Składnik „nazwa projektu” przyrostka adresu URL „egg = -” jest używany przez pip w logice zależności do identyfikowania projektu przed pobraniem pip i analizą metadanych. Opcjonalny składnik „wersja” nazwy jajka nie ma znaczenia funkcjonalnego. Zapewnia jedynie czytelną dla człowieka wskazówkę, która wersja jest używana. W przypadku projektów, w których plik setup.py nie znajduje się w katalogu głównym projektu, używany jest komponent „subdirectory”. Wartość komponentu „subdirectory” powinna być ścieżką zaczynającą się od katalogu głównego projektu do miejsca, w którym znajduje się plik setup.py.
Z tego wnioskuję, że wartość egg jest używana tylko do sprawdzania zależności i dlatego uważam, że zgodnie z konwencją some-pypi-package-namenależy używać nazwy pakietu (tj. ), A nie żadnego zawartego folderu (tj. some_pypi_package_name)
pip install
dokumentacji mówi o tym#egg=name
, ale nie daje jasnej odpowiedzi.Odpowiedzi:
na pip install -h ciąg znaków „jajko” jest katalogiem, który jest pobierany podczas instalacji
źródło
project-name.egg-info/top_level.txt
powinien zostać utworzony. Użyj zawartości tego pliku jako wartościegg
parametru.egg=...
ustawienie ma znaczenie. Pakiet, który instaluję, ma wiele wpisów w pliku top_level.txt. Eksperymentowałem z dopasowaniem go doname
kwarg, którego używa skrypt,setup.py
ale także z dowolną wartością. Wyniki wydają się być takie same. Zwróć uwagę, że instaluję przy użyciupip install https://...
składni, która nie wymaga-e
.Musisz dołączyć # egg = Package, aby pip wiedział, czego się spodziewać pod tym adresem URL. Zobacz https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
więcej o jajach
źródło
pip install -h
,Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)
nie jestem pewien, czy jest używana gdzie indziej ...Jajko to po prostu dołączony kod Pythona . W adresie URL git jajko to nazwa projektu. Wsparcie VCS
Zwykle instalujemy pakiety Pythona z Pypi, więc podajesz TYLKO nazwę i wersję pakietu (lub zakłada się najnowszą wersję, jeśli nie określisz). Następnie Pypi wyszukuje, które jajko chcesz i pip instaluje.
pip install celery
zainstaluje najnowsze opublikowane jajko ipip install celery[redis]
zainstaluje inne jajko, które zawiera ten sam pakiet selera, a także zainstaluje najnowsze jajka z wszystkich pakietów wymienionych jako zależności redis w pliku setup.py selera.W przypadku ścieżek git i gitlab należy określić
/{user|group}/{repository}.git@{tag}#egg={package-name}
. istnieje różnica między#egg=celery
i#egg=celery[redis]
, ale oba będą pochodzić z tego samego kodu źródłowego.„znacznik” może być również odgałęzieniem lub skrótem zatwierdzenia oprócz rzeczywistego znacznika. Zakłada się, że
master
tak jest, jeśli nie określisz.na przykład
git+https://github.com/celery/celery.git#egg=celery==4.3.0
wyewidencjonuje gałąź master i ją zainstaluje. Nawet jeśli podałeś numer wersji, nie jest on brany pod uwagę podczas instalacji. NUMER WERSJI JEST IGNOROWANYPodczas instalacji przez git lub inne adresy URL VCS będziesz chciał znaleźć tag lub hash wersji, której potrzebujesz. Na przykład,
git+https://github.com/celery/[email protected]#egg=celery
który pobierze zatwierdzenie oznaczone „v4.3.0”, a następnie zainstaluje pakiet z tego kodu źródłowego. Zakładając, że opiekunowie nie rażąco błędnie otagowali swoje repozytoria, możesz uzyskać taką wersję, jaką chcesz.źródło
https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support mówi:
Z tego wnioskuję, że wartość egg jest używana tylko do sprawdzania zależności i dlatego uważam, że zgodnie z konwencją
some-pypi-package-name
należy używać nazwy pakietu (tj. ), A nie żadnego zawartego folderu (tj.some_pypi_package_name
)źródło