Mon python ne trouve pas de modules dans le même répertoire . Qu'est-ce que je fais mal? (python2.7)
Donc, j'ai un répertoire '2014_07_13_test', avec deux fichiers dedans:
où bonjour.py:
# !/usr/local/bin/python
# -*- coding: utf-8 -*-
def hello1():
print 'HelloWorld!'
et test.py:
# !/usr/local/bin/python
# -*- coding: utf-8 -*-
from hello import hello1
hello1()
Python encore me donne
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 4, in <module>
ImportError: No module named hello
Qu'est-ce qui ne va pas?
Votre code est correct, je suppose que votre problème est de savoir comment vous le lancez.
Vous devez lancer python à partir de votre répertoire '2014_07_13_test'.
Ouvrez une invite de commande et «cd» dans votre répertoire «2014_07_13_test».
Par exemple:
$ cd /path/to/2014_07_13_test
$ python test.py
Si vous ne pouvez pas "cd" dans le répertoire, vous pouvez l'ajouter à sys.path
Dans test.py:
import sys, os
sys.path.append('/path/to/2014_07_13_test')
Ou définissez/modifiez le PYTHONPATH
Et tout devrait bien se passer ...
... Eh bien, il y a une légère erreur avec vos lignes 'Shebang' (la première ligne de vos deux fichiers), il ne devrait pas y avoir d'espace entre le '#' et le '!'
Il y a un meilleur Shebang vous devriez utiliser.
De plus, vous n'avez pas besoin de la ligne Shebang sur tous les fichiers, mais uniquement de ceux que vous souhaitez exécuter à partir de votre shell en tant que fichiers exécutables.
Changez votre import dans test.py en:
from .hello import hello1
J'ai eu un problème similaire, je l'ai résolu en ajoutant explicitement le répertoire du fichier à la liste des chemins:
import os
import sys
file_dir = os.path.dirname(__file__)
sys.path.append(file_dir)
Après cela, je n'ai eu aucun problème à importer du même répertoire.
Voici la solution générique que j'utilise. Il résout le problème d'importation depuis des modules dans le même dossier:
import os.path
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
Mettez ceci en haut du module, ce qui donne l'erreur "Aucun module nommé xxxx"
J'ai rencontré ce problème. J'avais trois dossiers dans le même répertoire, donc je devais spécifier quel dossier. Ex: depuis un script d'importation de dossier
En utilisant Pycharm ici, python 3:
Mon fichier s'appelait 'file_to_open'
Je l'ai changé pour 'FileToOpen' et cela a bien fonctionné.
Problème: n'aime probablement pas les traits de soulignement '_'
Dans mon cas, Python n'a pas pu le trouver car je mettrais le code dans un module avec des traits d'union, par exemple. my-module
. Quand je l'ai changé pour my_module
cela a fonctionné.