L'appel d'une fonction Python à partir d'un autre fichier
Ce problème a confondu moi pendant des jours.
J'ai deux fichiers, helpers.py
et launcher.py
.
Dans helpers.py
j'ai défini la fonction hello()
, qui affiche "bonjour".
Je veux l'appeler hello()
dans launcher.py.
C'est ce que j'ai écrit dans launcher.py
:
from helpers import hello
....
helpers.hello()
Mais quand je le lance, j'obtiens ceci:
from helpers import hello
ImportError: No module named helpers
Comment puis-je résoudre ce problème?
Modifier en réponse à des réponses /commentaires
- Je suis sous OS X et Python 3.4
- Les deux fichiers sont dans le même répertoire
-
J'ai essayé les deux façons de faire:
from helpers import hello hello()
et
import helpers helpers.hello()
Mais toujours ce bug:
import helpers ImportError: No module named 'helpers'
Je pense qu'il devrait être quelque chose de mal dans le chemin de classe de Terminale.
Deuxième édition
Le problème mis en évidence dans ces réponses était un problème, mais à la fin la réinitialisation de la variable classpath résolu.
- Pourriez-vous veuillez donner des informations sur votre système d'Exploitation et la structure du système de fichiers dans lequel vous travaillez?
- Aucun module nommé aides signifie qu'il ne peut pas trouver le programme. Utiliser sys.chemin d'accès.append(dir_name) pour ajouter le répertoire à ceux qui en Python recherches pour les programmes de déclarations d'importation.
- Ou vous pouvez aussi utiliser la variable d'environnement PYTHONPATH pour que.
- Changer le chemin de classe (Java variable d'environnement) fixe un Python problème? Cela semble très étrange. Êtes-vous sûr de ne pas modifier le PYTHONPATH (un Python variable d'environnement) à la place?
Vous devez vous connecter pour publier un commentaire.
Le problème vient de cette ligne:
Le remplacer par ceci:
Maintenant cela fonctionne parce que vous n'avez importé le nom
hello
de lahelpers
module. Vous n'avez pas importé le nomhelpers
lui-même.De sorte que vous pouvez avoir ceci:
Ou vous pouvez avoir ceci:
from helpers import hello
/helpers.hello()
combinaison ne fonctionne pas, qui ne sont pas également conduire à uneImportError
.- Je réinitialiser le CLASSPATH et il fonctionne très bien en quelque sorte. Problème bizarre. Merci à tous!
Votre problème est une question de compréhension des espaces de noms. Vous n'avez pas importer les aides de l'espace de noms...c'est pourquoi l'interprète ne reconnaît pas les aides. Je vous recommandons fortement de lire sur les espaces de noms, car ils sont très utiles en python.
Espace De Noms Document 1
Officiel Python Document D'Espace De Noms
Jetez un oeil à ces liens ci-dessus.
L'interpréteur python ne trouvez pas votre module "helpers".
Avec quel système d'exploitation avez-vous travailler?
Lorsque vous êtes sous Unix/Linux ou similaire, ainsi que vos fichiers sont dans le même répertoire, il devrait fonctionner. Mais j'ai entendu dire, qu'il y a des problèmes de travail, par exemple, sur Windows. Peut-être, il doit y avoir une recherche de chemin ensemble.
Voir ici:
https://docs.python.org/2/tutorial/modules.html#the-module-search-path
Edit: Michael est bonne, quand vous faites "d'aides à l'importation ..." que de ne pas le module est importet en tant que tel, mais seulement bonjour est connu du système!
Il suffit de ne
Ou:
ImportError
et que tu avais eu une question début de la réponse (à mon avis, YMMV) doit être dans un commentaire. J'ai parfois le même type de frustration avec les examens et le drapeau de décisions. En général, cependant, je pense que les avantages l'emportent sur les inconvénients. J'ai aussi essayer de voir les points positifs, je devrais peut-être édité au lieu de revoir la manière dont je l'ai fait.ne peux pas commenter, mais les deux fichiers dans le même dossier? Je voudrais essayer:
from helpers.py import hello
Système de fichiers :
dans les principales...
suivez les l'importation des modules dans les docs
J'ai eu le même problème: ModuleNotFoundError: Pas de module nommé "nom du module".
Dans mon cas, le module et le script que j'en appelle à été dans le même répertoire, cependant, mon répertoire de travail n'était pas correcte. Après j'ai changé mon répertoire de travail à l'aide de la suite, d'importation travaillé: