Ich habe Probleme beim Ausführen von py.test über Pakete, die mysql importieren. Das Paket mysql wurde mit pip in einem virtualenv installiert.
%Vor% Ich kann ohne Probleme laufen python test_mysql.py
, aber wenn ich py.test test_mysql.py
führe, bekomme ich:
Irgendeine Idee, was ist das Problem?
Es sieht so aus, als ob Sie die systemweite Version von py.test
verwenden, die eine nicht-virtualenv-Version von Python verwendet. (In dem das mysql
-Paket nicht installiert ist).
Installiere py.test
in den virtualenv, dann wird dein Problem gelöst.
SEITENHINWEIS
Um sicherzustellen, dass Sie das neu installierte py.test
verwenden, löschen Sie den von der Shell verwendeten Befehlspfad-Cache.
Geben Sie beispielsweise den folgenden Befehl aus, wenn Sie bash
verwenden:
Sie finden vielleicht, dass @ falsetrus Antwort nicht funktioniert, wenn Sie pytest systemweit installiert haben, NACHDEM Sie in der virtualenv installiert haben, wie ich es getan habe.
(Schnelle Anmerkung: py.test ist die alte Version des Befehls, pytest ist der empfohlene Weg, aber was für eins gilt, gilt für den anderen)
Sie können herausfinden, wo pytest geladen wird, indem Sie which pytest
aufrufen.
Wie Sie sehen können, zeigt mein Pythe einen, der nicht im virtualenv ist:
%Vor%Hier ist der Beweis, dass pytest IS im virtualenv installiert ist:
%Vor% Und hash -r
macht keinen Unterschied (da keine neue Installation stattgefunden hat):
Die Lösung ist, pytest im virtualenv zu deinstallieren und neu zu installieren,
%Vor%Wenn Sie aus irgendeinem Grund nicht neu installieren können, können Sie dies tun, indem Sie pytest als Modul über den Python in Ihrem virtualenv aufrufen:
%Vor%Tags und Links python mysql virtualenv py.test