web-dev-qa-db-fra.com

"ImportError: Aucun module nommé ..." lors de l'importation de mon propre module

J'essaie d'importer un module et j'obtiens une erreur ImportError.

Dans le fichier PortfolioStatus.py, j'ai le code suivant qui importe la classe share_data à partir du module share_data.py
from Shares.share_data import share_data

Je reçois l'erreur suivante: 

File "/home/lucasamos/FYP/Shares/Communication/PortfolioStatus.py", line 3, in <module>
from Shares.share_data import share_data
ImportError: No module named Shares.share_data

Pour rendre les choses plus confuses, cela fonctionne bien sur ma machine locale mais j'héberge sur PythonAnywhere et c'est là que j'ai l'erreur

Ma hiérarchie de fichiers est visible dans l'image ci-dessous

 File hierarchy

Merci d'avance!

4
Lucas Amos

OK alors j'ai finalement réussi. Comme indiqué par quelques réponses, je devais ajouter mon dossier racine au chemin système.

En fin de compte c'est ce que j'ai fait:

import sys
sys.path.append("/home/lucasamos/FYP")
6
Lucas Amos

vous devriez essayer ceci:

import sys
sys.path.append("../Shares/templates")
import share_data

Il ajoute votre dossier de modèles à la liste des chemins d'accès vérifiés par python pour les modules.

9
CoMartel

Ajoutez __init__.py vide sur un niveau avec le fichier manage.py.

Une telle inclusion du fichier __init__.py indique à l'interpréteur Python que le répertoire doit être traité comme un paquet Python.

2
Andriy Ivaneyko

Cela est probablement dû au fait que votre répertoire de partages ne se trouve pas dans votre PYTHONPATH.

Voir cet article sur l’utilisation de PYTHONPATH: https://users-cs.au.dk/chili/PBI/pythonpath.html

Extrait:

Cependant, vous devrez souvent importer un module qui ne se trouve pas dans le même répertoire que le programme principal. En reprenant l'exemple ci-dessus, supposons que vous écriviez un programme situé dans ~/PBI/qui doit inclure mymodule.py.

Pour que l’interprète Python trouve votre module, vous devez lui indiquer où chercher. Vous pouvez le faire en définissant la variable d’environnement PYTHONPATH. En fonction du programme Shell que vous utilisez (par exemple, xterm), cela se fait de deux manières.

Frapper:

export PYTHONPATH = $ {PYTHONPATH}:/utilisateurs/[votre nom d'utilisateur]/PBI/Modules /

0
Jeff