Dentro dos pacotes do site, há pastas pytest
e _pytest
. A maior parte do código principal está em _pytest.
Ao olhar para pyproject.toml, não consegui descobrir como o setuptools sabe instalar pytest
e _pytest
.
Pensei que fosse devido à existência de __init__.py
arquivos, mas outras pastas testing/example_scripts
também os têm, então é improvável.
Também não há um setup.py em https://github.dev/pytest-dev/pytest . Eu estava procurando por algo como:
setup(
name='your_project_name',
version='0.1',
packages=find_packages() # or something like ['pytest', '_pytest']
)
Além disso, por que mostra pip list
e pipdeptree
não mostra _pytest
?
Presumi que todos os pacotes em site-packages serão exibidos. Pensei que os pacotes que começam com _
são privados, como as variáveis privadas do Python, mas não há opções em pip list
relação à exibição de "pacotes privados".
É conhecimento interno no
setuptools
código, não expresso em arquivos de configuração. Quandosetuptools
constrói um sdist ou um wheel parapytest
ele olha para o diretório raiz, encontra o subdiretóriosrc
e sabe que é src-layout . Então ele empacota tudo sobsrc
o que parece pacotes e subpacotes (diretórios com__init__.py
) e módulos (*.py
). Ao instalar a distribuiçãopip
descompacta tudo, incluindo_pytest
.Porque não é uma distribuição separada. É um pacote (diretório importável) distribuído dentro
pytest
da distribuição.pip list
e programas relacionados listam distribuições , não pacotes.Não, nem todos os pacotes (diretórios importáveis). Todas as distribuições instaladas!
Ao instalar uma distribuição,
pip
registre-a em seu "banco de dados", que é um conjunto de diretórios*.egg-info
e sob . Procure um diretório e veja um arquivo — ele lista módulos de nível superior ( significa ) e pacotes (ambos e ) da distribuição. Dessa forma, ele sabe o que remover ao desinstalar.*.dist-info
site-packages
pytest-<version>.dist-info
top_level.txt
py
py.py
_pytest
pytest