Erreur PyCharm: ‘No Module’ en essayant d’importer son propre module (script python)

J’ai écrit un module (un fichier my_mod.py dans le dossier my_module ). Actuellement, je travaille dans le fichier cool_script.py qui réside dans le dossier cur_proj . J’ai ouvert le dossier dans PyCharm en utilisant Fichier – Ouvrir (et je suppose donc qu’il s’agit d’un projet PyCharm).

Dans ProjectView (CMD-7), je peux voir mon projet cur_proj (en rouge) et sous “Bibliothèques externes”, je vois my_module . Dans cool_script.py, je peux écrire

 from my_module import my_mod as mm 

et PyCharm fait même des suggestions pour my_mod. Jusqu’ici tout va bien.

Cependant, lorsque j’essaie de lancer cool_script.py, PyCharm me dit “Aucun module nommé my_module”

Cela me semble étrange, car

A) dans le terminal (OS 10.10.2), en python, je peux importer le module sans problème – il y a une entrée correspondante dans le PYTHONPATH dans .bashrc

B) dans PyCharm – Paramètres – Projet cur_proj – Interprète de projet – CogWheel à côté de l’interpréteur de python – plus – affiche les chemins de l’icône de l’interpréteur sélectionné, les chemins de PYTHONPATH apparaissent (comme je le pense)

Par conséquent, pourquoi est-ce que j’obtiens l’erreur lorsque j’essaie de lancer cool_script.py? – Qu’est-ce qui me manque?

Remarques:

  • Je ne déclare pas une version python différente / spéciale en haut de cool_script.py
  • Je me suis assuré que le chemin d’access à my_module est correct
  • Je mets des fichiers __init__.py (fichiers vides) à la fois dans my_module et dans cur_proj
  • Je n’utilise pas virtualenv

Addendum 2015-fév-25

Lorsque je vais dans PyCharm pour exécuter – Modifier les configurations, pour mon projet actuel, deux options sont cochées : ” Ajouter des racines de contenu à PYTHONPATH ” et ” Ajouter des racines source à PYTHONPATH “. Lorsque j’ai décoché les deux, je peux charger mon module.

Donc ça marche maintenant – mais pourquoi ?

D’autres questions ont émergé:

  • Que sont les “racines de contenu” et que sont les “racines sources”? Et pourquoi est-ce que l’ajout de quelque chose au PYTHONPATH fait qu’il se casse?
  • devrais-je décocher ces deux options tout le temps (donc aussi dans les valeurs par défaut, pas seulement dans les configurations spécifiques au projet (panneau de gauche de la boîte de dialog Configurations Exécuter / Déboguer)?

Si votre propre module est dans le même chemin, vous devez marquer le chemin comme Sources Root . Dans l’explorateur de projet, cliquez avec le bouton droit sur le répertoire que vous souhaitez importer. Sélectionnez ensuite Mark Directory As et sélectionnez Sources Root .

J’espère que ça aide.

Ce que j’ai essayé, c’est de localiser l’emplacement où se trouvent mes fichiers.

Par exemple, E:\git_projects\My_project\__init__.py is my location.

Je suis allé dans Fichier -> Configuration -> Projet: My_project -> Structure du projet et ajouté la racine du contenu à la mention de la place E:\git_projects\My_project

cela a fonctionné pour moi.

my_module est un dossier et non un module et vous ne pouvez pas importer un dossier, essayez de déplacer my_mod.py dans le même dossier que le cool_script.py , puis import my_mod as mm . C’est parce que python ne regarde que dans le répertoire actuel et sys.path , et ne trouvera donc pas my_mod.py sauf s’il se trouve dans le même répertoire

Ou vous pouvez chercher ici une réponse vous indiquant comment importer depuis d’autres répertoires.

Quant à vos autres questions, je ne sais pas, car je n’utilise pas PyCharm.

Je recevais aussi l’erreur “Ajouter des racines source à PYTHONPATH”. Mon problème était que j’avais deux dossiers avec le même nom, comme project/subproject1/thing/src et project/subproject2/thing/src et je les avais tous deux marqués comme source. Lorsque j’ai renommé l’un des dossiers "thing" en "thing1" (n’importe quel nom unique), cela a fonctionné.

Peut-être que si PyCharm ajoute automatiquement les racines sources sélectionnées, il n’utilise pas le chemin complet et mélange donc les dossiers portant le même nom.

Cela peut être causé lorsque l’interpréteur Python ne trouve pas votre code. Vous devez mentionner explicitement Python pour trouver votre code à cet endroit.

Faire cela:

  • Allez sur votre console python
  • Ajoutez sys.path.extend(['your module location']) à la console Python.

Dans ton cas:

  • Allez sur votre console python,
  • Au début, écrivez le code suivant:

     import sys sys.path.extend([my module URI location]) 
  • Une fois que vous avez écrit cette déclaration, vous pouvez exécuter la commande suivante:

     from mymodule import functions 

L’étape clé à suivre est de recréer la configuration d’exécution du fichier source que vous essayez d’exécuter, afin que l’EDI prenne les nouveaux chemins.

La façon dont cela a fonctionné pour moi était d’aller à Run / Edit Configurations …, sélectionnez la configuration du fichier que vous essayez d’exécuter sur le côté gauche, décochez la case “Add source roots to PYTHONPATH”, enregistrez, puis revenez et cochez la case et enregistrez. ALORS ça marcherait.

Les racines de contenu sont des dossiers contenant le code de votre projet, tandis que les racines source sont également définies. La seule différence que j’ai compris est que le code dans les racines sources est construit avant le code dans la racine du contenu.

Si vous les décochez, cela n’affectera pas le runtime jusqu’au moment où vous ne créerez pas de modules séparés dans votre paquet, qui seront connectés manuellement à Django. Cela signifie que si l’un de vos fichiers ne contient pas “from django import …” ou qu’une fonction n’est pas appelée via django, le fait de décocher ces deux options entraînera un dysfonctionnement.

Mise à jour – le problème se pose uniquement lors de l’utilisation de Virtual Environmanet, et uniquement lors du contrôle du projet via le terminal fourni. Parce que le terminal fonctionne toujours via le pyhtonpath du système par défaut et non le env virtuel. tandis que le panneau de configuration python django fonctionne correctement.

Pycharm 2017.1.1

  1. Cliquez sur View->ToolBar & View->Tool Buttons
  2. Dans le volet de gauche, Project serait visible, cliquez dessus avec le bouton droit de la souris et appuyez sur Autoscroll to source , puis exécutez votre code.

Cela a fonctionné pour moi.

PyCharm Professional 2018.2.1

J’avais ce problème tout à l’heure et j’ai été capable de le résoudre d’une manière similaire à celle de @Beasortingz Fonseca et @Julie.

Si vous allez dans File -> Settings -> Project: YourProjectName -> Project Structure , vous aurez une structure de répertoire du projet dans lequel vous travaillez actuellement. Vous devrez parcourir vos répertoires et les étiqueter comme étant soit le répertoire Source de tous vos fichiers source ou un dossier de Resource pour les fichiers ssortingctement importés.

Vous voudrez également vous assurer que vous placez des fichiers __init__.py dans vos répertoires de ressources, ou dans n’importe quel endroit à partir __init__.py vous souhaitez importer, et cela fonctionnera parfaitement.

J’espère que cette réponse aide quelqu’un, et j’espère que JetBrains corrigera ce bug ennuyant.