Problmeme mit py.test unter Windows für pep8 Überprüfung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

Hallo,

ich bin ganz neu hier. Seit ein paar Wochen versuche ich mir anhand eines Buchs Python beizubringen. Prinzipiell komme ich gut voran aber jetzt habe ich ein Problem, bei welchem mir auch Google nicht helfen konnte - zumindest nicht bei meinen Suchanfragen.

Ich möchte auf Windows ein geschriebenes Programm auf pep8-Konformität überprüfen. Im meinem Buch steht geschrieben, dass ich auf der Windows Kommandozeile folgende Befehle eingeben soll:

Code: Alles auswählen

py -3 -m pip install pytest
sowie

Code: Alles auswählen

py -3 -m pop install pytest-pep8
Beides funktioniert einwandfrei. Die Installationen laufen ohne Fehlermeldungen durch.
Wenn ich aber schließlich den Test durchführe, mit

Code: Alles auswählen

py.test --pep8 datei.py
bekomme ich die Windows Fehlermeldung, dass der Befehl "py.test" nicht gefunden wurde.

Bei meiner Recherche bin ich zwar auf eine Online-Plattform gestoßen, die auch pep8-Tests durchführt, womit ich dieses Problem umgehen könnte, da ich mich bisher aber durch alle Themen durchgebissen habe, würde ich dieses Sache auch gerne hinbekommen.

Das Buch bezieht sich auf Python 3.4. Mir kam der Gedanke, dass py.test bei der aktuellen Version prinzipiell nicht mehr funktioniert. Sollte dem so sein, wüsste ich gerne, wie das aktuell funktioniert.
Sorry, ist sicherlich eine Noob-Frage - aber das bin ich eben (noch).

Danke und Gruß,

Christian
Benutzeravatar
__blackjack__
User
Beiträge: 13005
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Gibt es denn pytest ohne den Punkt? Kann sein das Windows das nicht mag und py.test installiert normalerweise beide Varianten. Zumindest unter Linux.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

__blackjack__ hat geschrieben: Montag 12. November 2018, 17:33 Gibt es denn pytest ohne den Punkt? Kann sein das Windows das nicht mag und py.test installiert normalerweise beide Varianten. Zumindest unter Linux.
Hatte ich auch schon vermutet. Nein, auch pytest ergibt die gleiche Fehlermeldung.
Hab mich inzwischen auch auf Youtube durchgewurschtelt. In den Videos dort funktioniert das mit py.test

Habe Python und die Entwicklerwerkzeuge auch auf einem anderen Windows 10 Rechner installiert. Das gleiche Ergebnis.
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

@2Bsafe: Kannst du Pytest über `py -3 -m pytest` aufrufen?
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

narpfel hat geschrieben: Montag 12. November 2018, 19:36 @2Bsafe: Kannst du Pytest über `py -3 -m pytest` aufrufen?
Ja, dann passiert was:
Bild

Mir kam die Idee es mit

Code: Alles auswählen

py -3 -m pytest zuprüfendedatei.py
zu versuchen. Dann bekomme ich aber nur einen blinkenden Cursor und es passiert nichts weiter.

Die Meldungen sagen aus, dass es an Zugriffsrechten hapert. Kann es damit zusammenhängen? Hatte die Kommandozeile als Administrator aufgerufen.
Benutzeravatar
__blackjack__
User
Beiträge: 13005
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@2Bsafe: Wenn man keine Argumente angibt, dann fängt pytest an vom aktuellen Arbeitsverzeichnis aus alle Unterverzeichnisse nach Python-Dateien zu durchsuchen.

Was enthält denn 'zuprüfendedatei.py'? Kann man die importieren ohne das irgendwie ein Programm anfängt zu laufen?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

__blackjack__ hat geschrieben: Montag 12. November 2018, 20:24 Was enthält denn 'zuprüfendedatei.py'? Kann man die importieren ohne das irgendwie ein Programm anfängt zu laufen?
Das ist nur eine Dummy-Datei mit ein paar Zeilen belanglosem Code. Ich möchte es nur hinbekommen, dass ich Programme auf PEP8-Konformität testen kann.

Welche Argumente könnte ich denn angeben, dass in einem bestimmen Ordner eine Datei gesucht und überprüft werden würde?
Benutzeravatar
__blackjack__
User
Beiträge: 13005
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@2Bsafe: Wenn Du diesen Test mit pytest machen möchtest, dann muss der Code so geschrieben sein, dass man ihn ohne Seiteneffekte importieren kann. Das sollte man sowieso tun. Sie das als zusätzlichen Test und schreib die Dummy-Datei entsprechend um.

Ansonsten nimm halt ein anderes Werkzeug, zum Beispiel ``pep8``. Das müsste als Abhängigkeit von pytest-pep8 sowieso schon installiert sein.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

Verräts du mir, wie ich mit "pep8" einen solchen Test durchführen kann? Oder hast du einen Link für mich, damit ich mir das aneignen kann?
Benutzeravatar
__blackjack__
User
Beiträge: 13005
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Naja, einfach aufrufen mit dem Dateinamen als Argument: https://pypi.org/project/pep8/

Bei Dir kommt dann wahrscheinlich wieder das Problem dazu das die per ``pip`` installierten Programme nicht im %PATH% liegen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

__blackjack__ hat geschrieben: Montag 12. November 2018, 21:44 Bei Dir kommt dann wahrscheinlich wieder das Problem dazu das die per ``pip`` installierten Programme nicht im %PATH% liegen.
Aber das lässt sich ja ändern. Ist das dieser Pfad, den ich eintragen muss?

Code: Alles auswählen

C:\...\AppData\Local\pip
Danke für den Link!
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

Meinst du es liegt an den Umgebungsvariablen, dass py.test nicht gefunden wird?
Wenn ja, welchen Pfad muss ich eintragen?
Den oben genannten Pfad habe ich eingetragen. Hat nichts verändert. Abgesehen davon, dass da auf den ersten Blick auch nichts hilfreiches drin liegt.
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

@2Bsafe: Du musst den Pfad zum Verzeichnis, in dem `pip` liegt, angeben. Das sollte der Installer eigentlich automatisch machen, wenn man die Option nicht abwählt. Hier ist das in der Python-Dokumentation beschrieben.

Edit: Die restlichen Programme wie `pytest` und `pep8` sollte im gleichen Verzeichnis liegen.
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

Hab es jetzt hinbekommen. Es war eine Umgebungsvariable zu setzen.

Und zwar:

Code: Alles auswählen

C:\Program Files (x86)\Scripts
Denn dort liegen py.test und manch anderes.

Das System muss neu gestartet werden nachdem der Pfad bei den Umgebungsvariablen eingetragen wurde.

Danke für die Hilfe.
Benutzeravatar
pixewakb
User
Beiträge: 1409
Registriert: Sonntag 24. April 2011, 19:43

Wie hast Du den Pfad als Umgebungsvariable gesetzt? Ich habe wahrscheinlich ein ähnliches Problem (pipenv)...
2Bsafe
User
Beiträge: 9
Registriert: Montag 12. November 2018, 15:26

pixewakb hat geschrieben: Sonntag 18. November 2018, 17:54 Wie hast Du den Pfad als Umgebungsvariable gesetzt? Ich habe wahrscheinlich ein ähnliches Problem (pipenv)...
In den Systemeigenschaften im Reiter Erweitert (Windows 10) auf "Umgebungsvariablen" klicken. Dort die Variable "Path" anlegen und den Pfad zum Ordner "Script" eintragen, in welchem py.test liegt.
Sollte die Path Variable schon vorhanden sein, kannst du einfach einen weiteren Pfad hinzufügen, indem du den vorhandenen Pfad mit einem Semikolon ";" abschließt und den zusätzlichen Pfad in der Variable Path einträgst.
Antworten