Pergunta

Alguém pode explicar como ovo info-diretórios estão ligados a seus respectivos módulos? Por exemplo, eu tenho a seguinte:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

Estou assumindo o diretório ovo-info é fazer com que o módulo correspondente visível para setuptools (easy_install), certo? Se assim for, como é que setuptools amarrar o diretório ovo-info para o diretório módulo?

Assumindo que estou no caminho certo, e por uma questão de exemplo ... Se eu quisesse fazer um pacote existente da mina visível para setuptools, eu poderia simplesmente ligar simbolicamente o diretório do módulo e o diretório ovo-info para o diretório site-packages? Eu teria apenas tentei isso mesmo, mas eu não tenho certeza de como testar se o pacote é visível para setuptools. Os pontos de bónus se você também pode me dizer como testar isso:)

A principal razão pela qual eu estou tentando entender tudo isso é porque eu gostaria de ligar simbolicamente alguns dos meus módulos em site-packages para que eu possa alterá-los e ter as alterações visíveis para os scripts que usá-los sem ter para reinstalar o óvulo de PyPI após cada alteração.

Foi útil?

Solução

Os .egg info-diretórios só são criados se --single-version-externamente de gestão foi utilizada para instalar o ovo. "Normalmente", a instalação de um ovo criaria um (ou arquivo zip) anuário single, contendo tanto o código e os metadados.

pkg_resources (que é a biblioteca que lê os metadados) tem uma require função que pode ser usado para solicitar uma versão específica do pacote. Para "velho estilo", as importações regulares, easy_install hacks um arquivo .pth para obter o diretório de ovo em sys.path. Para --single-version-externamente de gestão, este pirataria não é necessário, porque haverá apenas uma única versão instalada (por infra-estrutura pacakging do sistema, por exemplo rpm ou dpkg). O ovo-info ainda é incluído, para aplicações que utilizam require (ou qualquer um dos outros pkg_resources mecanismos de ligação).

Se você quiser instalar um pacote de hard-ligando, eu recomendo usar "setup.py desenvolver". Este é um comando do setuptools que na verdade não instalar o ovo, mas torna disponível em todo o site. Para isso, ele cria um arquivo de ovo-link para que pkg_resources pode encontrá-lo, e ele manipula um arquivo .pth, de modo que a importação regular pode encontrá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top