Gegeben setup.py
wie folgt:
from distutils.core import setup
setup(
name = 'TestApp',
version = '0.0.1',
author = 'saaj',
py_modules = ['app'],
test_suite = 'test'
)
Für einige Scripting und Automatisierung ohne das Paket zu installieren, wo pip
, easy_install
und sogar setuptools
nicht Befehlszeilenoptionen oder öffentliche APIs zum Lesen aller Metadaten (zB test_suite
liefern können hier ist), ein wenig hacky Weg:
python3 -c "import sys, types; m = types.ModuleType('distutils.core'); \
m.setup = lambda **kwargs: print(kwargs); \
sys.modules['distutils.core'] = m; import setup"
Dies wird eine dict
von Keyword-Argumente drucken zu setup()
geben.
{'author': 'saaj', 'version': '0.0.1', 'name': 'TestApp',
'test_suite': 'test', 'py_modules': ['app']}
Sie können print
im lambda
ersetzen, was auch immer Ausgabe, die Sie benötigen. Wenn Ihre setup.py
importiert setup()
von setuptools
, die eigentlich die empfohlene Methode ist, ersetzen Sie einfach "distutils.. Kern“mit "Setuptools" im Snippet
Formatiert Schnipsel folgt:
import sys
import types
m = types.ModuleType('distutils.core')
m.setup = lambda **kwargs: print(kwargs)
sys.modules['distutils.core'] = m
import setup # import you setup.py with mocked setup()
Leider habe ich nicht' pip' jetzt installiert, so dass es nicht testen kann die 'pkg_resources.get_distribution'. approach scheint nicht für eine Erweiterung zu funktionieren, die über ein einfaches 'python setup.py build' installiert wurde.In diesem Fall erhalte ich eine' DistributionNotFound: foo' Ausnahme. – dastrobu
python setup.py build installiert nicht. –
Verwendung von 'pip' fügt eine enorme Verzögerung zum Zeitpunkt des Imports hinzu und fügt Ihrem eigenen Code einen beträchtlichen Speicherbedarf hinzu.Innerhalb verwendet es nur' pkg_resources' und führt Sie zu einem identischen Ergebnis; im Grunde ist 'pip' hier irrelevant und a irreführende "Lösung ". Die Antwort erhält auch nicht die gewünschte Information; Von einem "Distribution" -Objekt ist es extrem nicht offensichtlich, wie Version, Autor und Beschreibung unter den anderen Feldern wieder herauskommen. 'pkg._get_metadata (pkg.PKG_INFO)' liefert Ihnen die ersten Zeilen aus der Metadatendatei als Liste. – amcgregor