325 votes

Problème de PATH avec pytest 'ImportError : Pas de module nommé YadaYadaYada'.

J'ai utilisé easy_install pour installer pytest sur un mac et j'ai commencé à écrire des tests pour un projet avec une structure de fichiers comme celle-ci :

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

exécuter py.test alors que dans le répertoire repo, tout se comporte comme on peut s'y attendre

mais quand j'essaie la même chose sous linux ou Windows (les deux ont pytest 2.2.3 sur eux), il aboie dès qu'il rencontre sa première importation de quelque chose de mon chemin d'application. Disons par exemple from app import some_def_in_app

Dois-je modifier mon PATH pour exécuter py.test sur ces systèmes ? Quelqu'un a-t-il déjà rencontré ce problème ?

5voto

J'ai rencontré le même problème en suivant le tutoriel Flask et j'ai trouvé la réponse sur le site officiel de Pytest. docs C'est un petit changement par rapport à la façon dont j'ai l'habitude (et je pense que beaucoup d'autres) de faire les choses.

Vous devez créer un setup.py dans le répertoire Root de votre projet avec au moins les deux lignes suivantes :

from setuptools import setup, find_packages
setup(name="PACKAGENAME", packages=find_packages())

où PACKAGENAME est le nom de votre application. Ensuite, vous devez l'installer avec pip :

pip install -e .

El -e indique à pip d'installer le paquet en mode modifiable ou "développement". Ainsi, la prochaine fois que vous lancerez pytest il devrait trouver votre application dans le répertoire standard PYTHONPATH .

3voto

nocibambi Points 156

J'ai eu un problème similaire. pytest ne reconnaissait pas un module installé dans l'environnement dans lequel je travaillais.

J'ai résolu le problème en installant également pytest dans le même environnement.

3voto

Alireza Points 111

Aussi, si vous exécutez pytest dans votre environnement virtuel, assurez-vous que pytest est installé dans votre environnement virtuel. Activez votre environnement virtuel et exécutez pip install pytest .

3voto

Tillus Points 145

C'est un peu dommage que ce soit un problème dans python... Mais ajouter simplement cette variable d'environnement est le moyen le plus confortable, selon moi :

export PYTHONPATH=$PYTHONPATH:.

Vous pouvez utiliser direnv pour que cela se produise automatiquement :)

2voto

Paweł Mucha Points 216

Pour moi, le problème était tests.py généré par Django avec tests répertoire. Suppression de tests.py a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X