2017-09-18 3 views
-1

Avant de marquer cela comme une copie s'il vous plaît lire le problème entier, ce n'est pas l'erreur d'importation habituelle sys.path.Erreur d'importation Python inhabituelle

C'est la structure de répertoire du module que je suis en train d'importer

root 
|_moduleDir1 
| |_ myModule1.py 
| |_ __init__.py 
|_ moduleDir2 
    |_ myModule2.py 
    |_ __init__.py 

Je travaille avec 2 machines différentes. Mon script fonctionne bien sur un et j'obtiens l'erreur d'importation de l'autre. Au début, je pensais que c'était juste un problème d'environnement, mais je pense que quelque chose d'autre se passe. Lorsque j'exécute mon script qui importe myModule1.py avec

import moduleDir1.myModule1 

sur l'ordinateur défaillant, il génère l'erreur d'importation suivante.

ImportError: No module named myModule1 

La raison pour laquelle je ne crois pas que ce soit un problème de PATH ou d'un problème de sys.path est que j'ai ajouté le répertoire racine aux variables d'environnement appropriées et quand j'ajouter

import moduleDir2.myModule2 

ci-dessus l'importation de myModule1 dans le script, il ne lance pas une erreur d'importation, donc je sais que root est dans sys.path ou il y aurait une erreur pour les deux. En outre, je ne pense pas que ce soit un problème avec init.py car cela fonctionne très bien sur l'autre machine. Les deux machines exécutent Windows 10.

Je suis perplexe et j'ai cherché et testé pendant des heures sans succès. Tout ce que je peux trouver, ce sont des messages qui sont des problèmes avec init.py ou sys.path et ce ne sont pas les bonnes solutions pour mon problème. Toutes les suggestions ou réflexions sur les raisons pour lesquelles je pourrais obtenir une erreur d'importation pour un module et pas pour l'autre lorsqu'ils sont sous le même répertoire parent seraient appréciées.

+3

Veuillez afficher le code qui tente d'importer 'myModule1' et afficher le message d'erreur complet. – BrenBarn

+0

Essayez simplement 'import moduleDir1' puis' print (moduleDir1 .__ fichier __) '. La sortie est ce que vous attendez? S'il y a un autre répertoire appelé 'moduleDir1' plus tôt sur' sys.path', ou un fichier appelé 'moduleDir1.py', cela sera importé à la place, et si cela n'a pas de sous-module appelé' myModule1' alors vous aurez obtenir cette erreur. – BrenBarn

+0

Vous avez frappé le clou sur la tête! Il y a un autre module nommé la même chose situé ailleurs dans le système et c'est ce qui est importé. Merci beaucoup! Vous m'avez sauvé qui sait combien de temps! – jerrik

Répondre

0

Une des raisons peut être la deuxième machine qui lance une erreur d'importation n'a pas l'autorisation de lecture du répertoire. S'il vous plaît vérifier la permission du répertoire.

+0

C'est une bonne idée, mais après une double vérification, le deuxième utilisateur de la machine a l'autorisation de lecture pour tous les répertoires impliqués. – jerrik

+0

pouvez-vous faire une chose. Il suffit d'écrire un petit code pour créer le fichier sur l'emplacement en utilisant le code python sur la seconde machine. Si ce fichier est créé, alors le module doit avoir accès. – PramodG