2016-01-27 7 views
11

Ich habe pytest in ein virtualenv installiert und starte es von diesem virtuellen env, aber es verwendet nicht die Pakete, die ich in diesem virtuellen env installiert habe. Stattdessen werden die Hauptsystempakete verwendet. (Mit "python -m unittest discover" kann ich meine Tests mit dem richtigen Python und den richtigen Paketen ausführen, aber ich möchte das py.test-Framework verwenden.)Wie benutze ich pytest mit virtualenv?

Ist es möglich, dass py.test nicht ausgeführt wird? der pytest innerhalb der virtualenv und ich muss angeben, welche pytest zu laufen?

Wie bekomme ich py.test nur die Python und Pakete zu verwenden, die in meinem virtualenv sind?

Auch, da ich mehrere Pythons auf meinem System habe, wie kann ich sagen, welche Python Pytest verwendet? Wird es automatisch den Python innerhalb meines virtualenv verwenden, oder muss ich irgendwie angeben?

+0

Haben Sie aktivieren tatsächlich die virtualenv Sie vor der Installation und Ausführung pytest erstellt? d. h. 'Quelle venv/bin/aktivieren' –

+0

Definitiv. Ich benutze virtualenvwrapper und das aktuell aktivierte virtualenv erscheint auf meiner Aufforderung wenn es aktiviert ist. Außerdem kann ich die aktuellen Pakete von virtualenv mit Pip Freeze sehen. –

+1

Ich habe das zur Arbeit gebracht. Es erforderte nur einen Terminal-Neustart. –

Antwort

0

Sie haben Ihre Python env wollen jedes Mal, die Sie aktivieren Ihr Python-Skript ausführen, Sie haben mehrere Möglichkeiten, es zu aktivieren, gehen wir davon aus, dass Ihr virtualenv unter/home/Venv installiert ist:

1- die Basis eine davon ist die python mit einer Befehlszeile >>> /home/venv/bin/python <your python file.py>

2- fügen Sie diese Zeile auf der Oberseite der python-Skript-Datei #! /home/venv/bin/python und führen python <you python file.py>

3- aktivieren sie python env source /home/venv/bin/activate und th laufen en führen Sie Skript wie python <you python file.py>

4- Verwendung virtualenvwrapper an Manager und Ihre Python-Umgebungen

+0

Ich aktiviere definitiv immer mein env, jedes Mal wenn ich irgendein Skript daraus starte und es deaktiviere, wenn ich fertig bin. –

+0

Mein aktiver virtualenv ist Teil meiner Aufforderung. Ich habe py.test, um meinen virtualenv zu verwenden, indem ich mein Terminal neu starte. –

2

In meinem Fall aktiviere ich gezwungen war, die Venv (deaktivieren), entfernen pytest (pip uninstall pytest), geben Sie die Venv zu verlassen (source/mein/pfad/zu/venv) und dann pytest (pip install pytest) neu installieren. Ich weiß nicht genau warum pip sich weigere, pytest in venv zu installieren (es sagt es bereits vorhanden).

Ich hoffe, das

11

Innerhalb Ihrer Umgebung hilft, können Sie

versuchen
python -m pytest