J'ai écrit un module (un fichier de my_mod.py
fichier résidant 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 File - open (et je suppose qu'il s'agit donc 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'essaye d'exécuter 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 en .bashrc
B) dans PyCharm - Paramètres - Projet cur_proj - Interpréteur de projet - CogWheel à côté de l'interpréteur python - plus - afficher les chemins pour l'icône de l'interpréteur sélectionné, les chemins de PYTHONPATH apparaissent (comme je pense qu'ils devraient)
Par conséquent, pourquoi j'obtiens l'erreur lorsque j'essaye d'exécuter cool_script.py? - Qu'est-ce que je manque?
Remarques:
- Je ne déclare pas une version différente / spéciale de python en haut de cool_script.py
- Je me suis assuré que le chemin vers
my_module
est correct - Je mets des
__init__.py
fichiers (fichiers vides) à la fois dansmy_module
et danscur_proj
- Je n'utilise pas
virtualenv
Addendum 2015-févr.-25
Quand je vais dans PyCharm pour exécuter - Modifier les configurations, pour mon projet actuel, il y a deux options qui sont sélectionnées avec une coche: " Ajouter des racines de contenu à PYTHONPATH " et " Ajouter des racines de source à PYTHONPATH ". Lorsque les deux sont décochés, je peux charger mon module.
Cela fonctionne donc maintenant - mais pourquoi ?
D'autres questions ont émergé:
- Que sont les «racines de contenu» et que sont les «racines de source»? Et pourquoi l'ajout de quelque chose au PYTHONPATH le fait-il en quelque sorte casser?
- Dois-je décocher ces deux options tout le temps (donc aussi dans les valeurs par défaut, pas seulement les configurations spécifiques au projet (panneau de gauche de la boîte de dialogue Exécuter / Déboguer les configurations)?
Enable Django Support
les paramètres Languages & Frameworks -> Django
de la version Pro de PyCharm. Il ouvrait une console django qui causait les problèmes d'importation.
from foldername.mymodule import mymethod
. Une autre chose que j'ai dû faire est d'ajouter le dossier vide _init .py dans tous les dossiers que vous utiliseriez pour accéder à votre module, donc dans le cas oùfrom parentfolder.childfolder.mymodule ...
vous auriez besoin de init dans deux dossiers. En fonction de l'emplacement des dossiers les uns par rapport aux autres, vous devrez peut-être disposer d'un package de niveau supérieursys.path
comme décrit dans cette réponse