7
votes

Module de couverture.py Python - Erreurs d'importation lors de l'exécution du script

J'ai des difficultés à obtenir le module "couverture" pour Python fonctionnant correctement.

Je n'ai aucune autorisation à modifier ou à ajouter au répertoire Python, alors je ne peux pas installer easy_install à la couverture de configuration. P>

Travaillé autour de cela en ajoutant le répertoire de la couverture à mon chemin Python. La couverture fonctionne bien, saisit la couverture code> à Shell sortit la version. Couverture Aide CODE> Affiche toutes les commandes disponibles. Tout semble bien. P>

Je peux exécuter une couverture bien sur de petits scripts simples. P>

Cependant, lors de l'exécution d'un grand script avec un certain nombre d'importations sur 5 modules (script qui a été testé Comme fonctionne), lors de l'exécution de la commande avec Coverage exécutée [Commandes normales] code>, le script exécute et échoue, car certains modules ne peuvent pas être trouvés. strong> p>

Voici une ventilation: p>

ligne de commande sans couverture (bien fonctionne): p>

J'invoque le script en exécutant: ./ script_name.py arg1 arg2 arg3 code>

Lorsque j'essaie d'exécuter le script en saisissant: python script_name.py arg1 arg2 arg3 code>, le script échoue, omis d'importer des modules: p>

ImportError: No module named cx_Oracle


0 commentaires

4 Réponses :


4
votes

La bonne nouvelle est, courir avec "python" explicitement, et avec couverture.py produit le même résultat. La mauvaise nouvelle est que ce résultat est un message d'erreur.

Il semble que vous ayez plus d'une installation de python. On se trouve par "./script_name.py", l'autre est trouvé par "python ./script_name.py".p>Pour diagnostiquer le problème, ajoutez ces lignes au sommet de script_name.py:

import sys
print sys.executable
print "\n".join(sys.path)


4 commentaires

Salut Ned. Merci pour votre soutien et bien fait sur l'excellent colis. Je l'ai utilisé localement sans ces problèmes et ça marche des merveilles. Je me demandais si vous pouviez me diriger vers le bon endroit pour trier ce problème. Vous avez raison pourvoir «Python [nom de script]» sans le module jette les mêmes erreurs. Idéalement, j'aimerais simplement appeler "couverture exécuter / {full_path_to_script_name.py}" et avoir couru, mais je reçois un "Aucun fichier à exécuter:" / "/ {full_path_to_script_name.py}" Erreur "La commande fonctionne bien sans "couverture". Merci


Pas de soucis, corrigé ça! Je pense que le problème était assez unique à l'environnement que je suis en cours d'exécution, mais je devais changer quelques chemins dans des fichiers et y inclure d'autres. Un peu de labyrinthe, mais heureux d'élaborer s'il bénéficiera de quelqu'un d'autre.


@NeDbatchLerder: Je pense que je frappe un problème similaire, et votre réponse a contribué à le diagnostiquer. Je passe à l'intérieur de virtualenv et python -c 'importer Sys Sys; Imprimer (Sys.exCutable) ' Donne-moi un emplacement dans Virtualenv, mais lorsque je l'exécute à l'aide de Couverture Exécuter , il me montre l'interpréteur système. Pourriez-vous partager comment traiter avec cela et demander une couverture pour utiliser virtualenv actuellement activé?


@NeDbatchelder: J'ai ajouté une question sur celle-ci ( Stackoverflow.com/q/18959072/548696 ). Je crois que c'est trivial ou déjà résolu, mais je ne trouve pas de solution.



16
votes

Je pense que j'ai eu un problème similaire et j'ai réussi à le résoudre en exécutant une couverture comme celle-ci:

Python -M Couverture Run [Commandes normales]

Spécialement dans mon cas, c'était

Python -M Couverture RUN -M Unittest Discover

Il semble certainement être un cas de couverture à l'aide d'une installation de Python différente, car mon module signalé manquant n'a été installé que dans mon environnement virtuel et non dans mon env.


2 commentaires

Il devrait également fonctionner avec juste couverture exécutée -M unitest découvrez


Cela a fonctionné bien. Mais lorsque je fais rapport de couverture -M , cela me donne également tous les fichiers de la bibliothèque. J'ai essayé de donner - source mais la commande n'a pas accepté cela.



1
votes

Je vais ajouter mon expérience, car quelqu'un pourrait tomber dans la même erreur.

Je courais une couverture à l'intérieur d'un environnement virtuel Python (VENV) avec une couverture non installée. Couverture d'exécution, j'appelle en fait la couverture installée dans le monde entier.

Installation locale avec Couverture d'installation de PIP3 Résolu pour moi, utilisez-le maintenant Python3 -M Coverage exécuter MyFile.py . .


0 commentaires

0
votes

Je viens de rencontrer un problème très similaire où l'on utilise l'un ou l'autre des éléments suivants travaillés pour moi localement:

Couverture Exécuter

Python -M Couverture Run

si localement chaque fois que je rencontrais faire un test-test L'une de ces personnes a fonctionné bien, mais lorsque j'ai déployé mon code pour coderbuild sur AWS Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws Aws.

Je finis enfin à cela au fait que, au fil du temps, j'avais installé la couverture locale, et dans mon environnement local, mais à commencer à utiliser Pyenv, j'ai également installé cela dans mon environnement Pyenv, donc trois places localement.

Lors de l'exécution de l'agent de construction, j'étais en fait seulement l'installer dans un environnement de pyenv frais, et j'ai donc dû utiliser la syntaxe suivante:

Python -M Pipenv Run Coverage Run --Source = SRC / App -M Pytest -s -s --junitxml = résultat.xml src / test / unité / *. Py

Je suppose que la morale de mon histoire est de garder votre environnement de travail propre, que je t'oublierai de faire à partir de maintenant.

Cela pourrait aider quelqu'un dans une situation similaire, c'est pourquoi je pose.


0 commentaires