2017-05-08 1 views
0

Gibt es eine Möglichkeit zu sagen Pip zu überspringen einige setup_requires Abhängigkeiten, wenn nicht benötigt?Bedingte setup_requires Abhängigkeiten in setup.py

In meinem Szenario habe ich pytest-runner als eine Setup-Abhängigkeit deklariert (die zum Ausführen von Tests verwendet wird) in meiner setup.py. Wenn ich versuche, mein Paket zu installieren (zB: pip install my-package.tar.gz), lädt es pytest-runner herunter oder es schlägt fehl, es ist nicht verfügbar (*).

In setup.py ich habe:

... 
setup_requires=['pytest-runner', 'flake8'] 
... 

ich setup.py nur sagen möchte nur pytest Starter zu verwenden, wenn Tests ausgeführt werden. Ist das möglich?

Als @deceze vorgeschlagen, wird diese Erklärung arbeiten:

setup_requires=['pytest-runner', 'flake8'] if 'test' in sys.argv else [] 

Aber ich will nicht Logik hinzufügen, um setup.py.

(*) Die Umgebung ist sehr eingeschränkt, deshalb ist das Herunterladen einer Abhängigkeit ein Hindernis.

Antwort

0

rwt (Run mit diesem) scheint der bevorzugte Weg dazu zu sein.

Es bietet eine On-Demand-Abhängigkeitsauflösung, die Pakete für die Dauer einer Interpretersitzung verfügbar macht. Eines seiner angestrebten Szenarien ist: Testläufer.

Nach der Installation von RWT (*) können Sie setup.py Befehle von pytest Starter Modul laden Ausführung:

rwt pytest-runner -- setup.py test 

oder

python -m rwt pytest-runner -- setup.py test 

(*) Sie haben noch einen nicht benötigten installieren Abhängigkeit (zB: rwt), aber es scheint weniger Auswirkungen zu haben als die Installation anderer.

1

Es macht Sinn zu erklären, dass als extra:

setup(
    ..., 
    extras_require=dict(
     tests=[ 
      'pytest-runner' 
     ] 
    ) 
) 

Sie speziell, dass installieren mit pip install my-package[tests].

Als eine Alternative: setup.py ist ein voll funktionsfähiges Python-Programm ... Wenn Sie Ihre Umgebung irgendwie erkennen können, können Sie dynamisch entscheiden, ob bestimmte Abhängigkeiten zu der Liste erforderlich hinzugefügt werden oder nicht.

+1

Die Angabe als * extra * würde nicht funktionieren, da sie bei der Ausführung von ** python setup.py test ** nicht verfügbar sind und ich sie nicht lokal installieren möchte. Die Überprüfung der Umgebung ist definitiv eine Option, ich hoffe nicht die einzige. –

Verwandte Themen