Résolue

Importer module depuis Pycharm : erreur

# Résolution d'erreurs # Modules

Gabriel Trouvé

Mentor

Re,


J'ai une erreur intéressante (ou pas lol).

SI j'importe index depuis la petite ampoule rouge j'ai le chemin complet du module src.DocBlog.views. Et on voit que j'ai une erreur ModuleNotFOundError, pas de module nommé src.

Je suis obligé de mettre le chemin relatif .views pour que ça fonctionne.


Vous savez ce qui peut faire ça ?


Merci


Salut Gabriel,


oui il me semble que cela vient du fait de l'endroit où tu lances ton serveur django. Ton manage.py est dans le dossier src, donc si tu fait


from src.quelquechose


il ne comprend pas car tu n'es pas dans un dossier parent de src.


dis moi si ce n'est pas clair.

Thibault houdon

Mentor

Je confirme, c'est en relation au fichier manage.py, si tu souhaites pouvoir réaliser cet import, tu peux dans pycharm faire un clique droit sur le dossier src et indiquer que tu souhaites qu'il soit considéré comme "Sources Root" (Mark Directory As > Sources Root).


Ça va ajouter le chemin du dossier au Pythonpath et te permettre de faire ce genre d'import.


Mais ce n'est pas forcément conseillé (même si je le fais dans certaines vidéos, ce n'est pas la meilleure pratique).

Gabriel Trouvé

Mentor

D'accord. Mais du coup Pycharm lorsqu'il fait l'import de lui même "fait l'erreur" de ne pas partir du bon dossier ? Je ne sais pas si c'est bien clair ce que je viens de dire lol

Thibault houdon

Mentor

Non, PyCharm lance le fichier manage.py qui se trouve dans le dossier src, donc le dossier src devient par défaut le dossier depuis lequel ton script est lancé.


Quand tu lances un script Python, le dossier à partir duquel ton script est lancé est ajouté à la variable pythonpath, ce qui fait que tu peux importer des modules à partir de ce dossier.


Du coup dans ton fichier urls.py, tu peux faire un import depuis DocBlog.views (car le dossier src qui contient ton fichier manage.py est ajouté au pythonpath, du coup tous les fichiers et dossiers à l'intérieur de src sont considérés comme des modules, dont le dossier DocBlog). Sinon tu peux faire un import relatif en faisant import .views. L'import relatif se fait par rapport au fichier urls.py et le . indique le dossier courant. Comme ton fichier views.py est dans le même dossier que urls.py, ça fonctionne.

Gabriel Trouvé

Mentor

ok merci :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.