2017-08-16 1 views
0

Je dispose d'un fichier python qui contient des classes et fonctions et unles dépendances manquantes nécessaires lors des tests avec py.test

if __name__ == "__main__": 
    ... 

construction. Je veux tester une classe qui est définie dans ce fichier avec py.test. Pour mon premier test "hello world", mon fichier de test importe uniquement le fichier à tester.

Courir py.test dans PyCharm résultats mais dans

raceback (most recent call last): 
    File "[...]/unittest/datageneration_test.py", line 1, in <module> 
    from main.datageneration import * 
    File "[...]/main/datageneration.py", line 1, in <module> 
    import pandas as pd 
    File "[...]/lib/python3.6/site-packages/pandas/__init__.py", line 19, in <module> 
    "Missing required dependencies {0}".format(missing_dependencies)) 
ImportError: Missing required dependencies ['numpy'] 

Mon fichier à tester a les déclarations d'importation

import pandas as pd 
import numpy as np 
from scipy.special import expit 
import sys 
import os 
import scipy.io.wavfile as wav 
import json 
import uuid 

Mon Conda environment.yml est

channels: 
- conda-forge 
- defaults 
dependencies: 
- pandas=0.20.3 
- numpy=1.13.1 
- ggplot=0.11.5 
- python=3.6.2 
- pytest=3.2.1 

Qu'est-ce que est le problème ici?

+0

Espérons que cela aidera https://stackoverflow.com/questions/42973666/importerror-missing-required-dependencies-numpy – Anup

+0

Si vous utilisez un environnement conda, vous devez pointer votre pycharm pour utiliser cet environnement. – BoboDarph

+0

@Anup: Le lien suggère que je supprime les fichiers ".pyc", mais je n'en vois aucun dans mes dossiers. – Make42

Répondre

0

Je ne suis pas tout à fait sûr de ce qui a aidé, mais j'ai réinstallé/mis à jour numpy et pandas avec conda install .... Il me restait encore une erreur à propos du mauvais nom de fichier. Après avoir essayé beaucoup de choses, j'ai découvert que - même si j'utilisais pytest, pas la bibliothèque unittest - je ne pouvais pas nommer le dossier dans lequel tous mes fichiers de test sont "unittest". Le renommer en "unittests" a résolu cela. Maintenant tout fonctionne.

+0

Il est généralement recommandé d'éviter d'utiliser les mêmes noms que [modules de bibliothèque standard] (https://docs.python.org/3/py-modindex .html), car les modules dépendant de stdlib finiront par importer votre module. Si le module ne peut pas être renommé, le problème d'importation peut être évité en déplaçant le module sous un paquet (un répertoire contenant \ _ \ _ init \ _ \ _. Py). – theY4Kman