Quando faço um "pip install -e ..." para instalar a partir de um repositório git, tenho que especificar # egg = somename ou pip reclama. Por exemplo:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
Qual é o significado desta string "ovo"?
pip install
documentação fala sobre#egg=name
, mas não dá uma resposta clara.Respostas:
por pip install -h a string "ovo" é o diretório que é verificado como parte da instalação
fonte
project-name.egg-info/top_level.txt
deve ter sido criado. Use o conteúdo deste arquivo como o valor doegg
parâmetro.egg=...
configuração realmente importa. O pacote que estou instalando tem várias entradas no arquivo top_level.txt. Eu experimenteiname
combiná- lo com o kwarg que o script usa,setup.py
mas também com um valor arbitrário. Os resultados parecem ser os mesmos de qualquer maneira. Observe que estou instalando usando apip install https://...
sintaxe que não requer-e
.Você deve incluir # egg = Package para que pip saiba o que esperar daquele URL. Consulte https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
mais em ovos
fonte
pip install -h
,Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)
não tenho certeza se é usado em outro lugar ...Um ovo é apenas um código python empacotado . Em um url git, o ovo é o nome do projeto. Suporte VCS
Normalmente instalamos pacotes python de Pypi, então você especifica SOMENTE o nome do pacote e a versão (ou assume a versão mais recente se você não especificar). Pypi então procura por qual ovo você quer e o pip o instala.
pip install celery
instalaria o último ovo publicado epip install celery[redis]
instalaria um ovo diferente que contém o mesmo pacote de aipo e também instalaria os ovos mais recentes de quaisquer pacotes listados como dependências para redis no setup.py do aipo.Com caminhos git e gitlab, você especifica
/{user|group}/{repository}.git@{tag}#egg={package-name}
. há uma diferença entre#egg=celery
e#egg=celery[redis]
, mas ambos virão do mesmo código-fonte."tag" também pode ser um branch ou um hash de commit, além de uma tag real. Presume-se que seja
master
se você não especificar.por exemplo,
git+https://github.com/celery/celery.git#egg=celery==4.3.0
verificaria o branch master e o instalaria. Mesmo que você tenha especificado um número de versão, ele não é levado em consideração na instalação. O NÚMERO DA VERSÃO ESTÁ IGNORADOAo instalar via git ou outros urls VCS, você vai querer encontrar a tag ou hash da versão que você precisa. Por exemplo,
git+https://github.com/celery/[email protected]#egg=celery
que fará o checkout do commit com a tag "v4.3.0" e, em seguida, instalará o pacote desse código-fonte. Assumindo que os mantenedores não erraram em seus repositórios, você pode obter a versão que deseja assim.fonte
https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support diz:
A partir disso, deduzo que o valor do ovo é usado apenas para verificações de dependência e, portanto, acho que, por convenção, o nome do pacote (ou seja
some-pypi-package-name
) deve ser usado, não qualquer pasta contida (ou sejasome_pypi_package_name
)fonte