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)?
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éponseEnable Django Support
les paramètresLanguages & Frameworks -> Django
de la version Pro de PyCharm. Il ouvrait une console django qui causait les problèmes d'importation.Réponses:
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. Puis sélectionnezMark Directory As
et sélectionnezSources Root
.J'espère que ça aide.
la source
__init__.py
pour que Python traite les répertoires comme contenant des packages: stackoverflow.com/questions/448271/....
avant le nom du paquet pour spécifier que ce paquet est localDonc si vous allez à
-> Paramétrage -> Projet: Mon_projet -> Structure du projet,
Juste le répertoire dans lequel le code source est disponible et marquez-le comme "Sources" (vous pouvez le voir dans la même fenêtre). Le répertoire avec le code source doit devenir bleu. Maintenant, vous pouvez importer des modules résidant dans le même répertoire.
la source
Communauté PyCharm / Professionnel 2018.2.1
J'avais ce problème tout à l'heure et j'ai pu le résoudre de la même manière que @Beatriz Fonseca et @Julie l'ont souligné.
Si vous allez à
File
->Settings
->Project: YourProjectName
->Project Structure
, vous aurez une disposition de répertoire du projet dans lequel vous travaillez actuellement. Vous devrez parcourir vos répertoires et les étiqueter comme étant leSource
répertoire de tous vos fichiers source , ou en tant queResource
dossier pour les fichiers strictement destinés à l'importation.Vous voudrez également vous assurer que vous placez les
__init__.py
fichiers dans vos répertoires de ressources, ou vraiment partout où vous souhaitez importer, et cela fonctionnera parfaitement.J'espère que cette réponse aidera quelqu'un, et j'espère que JetBrains corrigera ce bogue ennuyeux.
la source
Mark Directory as
dans le menu contextuel et sélectionnezSources Root
.Ce que j'ai essayé, c'est de trouver l'emplacement où se trouvent mes fichiers.
par exemple
E:\git_projects\My_project\__init__.py is my location.
Je suis allé dans File -> Setting -> Project: My_project -> Project Structure et j'ai ajouté la racine du contenu à environ mentionner le lieu
E:\git_projects\My_project
cela a fonctionné pour moi.
la source
/home/my_user/git_projects/this_git_project/this_pycharm_project/
. J'ai ajouté en/home/my_user/git_projects/this_git_project/
tant que racine de contenu et en/home/my_user/git_projects/this_git_project/this_pycharm_project/
tant que seul dossier source et tout a finalement fonctionné.my_module
est un dossier pas un module et vous ne pouvez pas importer un dossier, essayez de vous déplacermy_mod.py
vers le même dossier que lecool_script.py
, puis faitesimport my_mod as mm
. C'est parce que python ne regarde que dans le répertoire courant etsys.path
, et ne le trouvera donc pas àmy_mod.py
moins qu'il ne soit dans le même répertoireOu vous pouvez chercher ici une réponse vous indiquant comment importer à partir d'autres répertoires.
Quant à vos autres questions, je ne sais pas car je n'utilise pas PyCharm.
la source
J'obtenais également 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
etproject/subproject2/thing/src
et que je les avais tous les deux marqués comme racine source. Lorsque j'ai renommé l'un des"thing"
dossiers 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 du même nom.
la source
Cela peut se produire lorsque l'interpréteur Python ne trouve pas votre code. Vous devez mentionner explicitement à Python pour trouver votre code à cet emplacement.
Faire cela:
sys.path.extend(['your module location'])
à la console Python.Dans ton cas:
Au début, écrivez le code suivant:
Une fois que vous avez écrit cette déclaration, vous pouvez exécuter la commande suivante:
la source
La principale étape déroutante qui doit être effectuée est de recréer la configuration d'exécution pour le fichier source que vous essayez d'exécuter, afin que l'EDI récupère les nouveaux chemins.
La façon dont cela a fonctionné pour moi était d'aller dans Exécuter / Modifier les configurations ..., sélectionnez la configuration du fichier que vous essayez d'exécuter sur le côté gauche, décochez la case "Ajouter les racines source à PYTHONPATH", enregistrez, puis revenez en arrière et cochez la case et enregistrez. ALORS cela fonctionnerait.
la source
Invalidate Cache/Restart
deux fois!Les racines de contenu sont des dossiers contenant le code de votre projet, tandis que les racines source sont également définies de la même manière. La seule différence que j'ai pu comprendre était que le code des racines source est construit avant le code de la racine du contenu.
Les décocher n'affecterait pas le runtime tant que vous ne créerez pas de modules séparés dans votre package qui sont connectés manuellement à Django. Cela signifie que si l'un de vos fichiers ne contient pas le 'from django import ...' ou que l'une des fonctions n'est pas appelée via django, décocher ces 2 options entraînera un dysfonctionnement.
Mise à jour - le problème survient 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 système par défaut et non via l'environnement virtuel. tandis que le panneau de contrôle de python django fonctionne très bien.
la source
La solution à ce problème sans avoir à marquer le répertoire comme racine source est de modifier les configurations d'exécution et dans Exécution, sélectionnez l'option "Rediriger l'entrée depuis" et choisissez le script que vous souhaitez exécuter. Cela fonctionne car il est ensuite traité comme si le script était exécuté de manière interactive dans ce répertoire. Cependant, Python marquera toujours le nom du module avec une erreur "aucun module nommé x":
Lorsque l'interpréteur exécute l'instruction d'importation, il recherche x.py dans une liste de répertoires assemblés à partir des sources suivantes:
la source
Pycharm 2017.1.1
View->ToolBar
&View->Tool Buttons
Project
serait visible, cliquez dessus avec le bouton droit de la souris et appuyez surAutoscroll to source
, puis exécutez votre code.Cela a fonctionné pour moi.
la source
ln -s. un projet
Si vous avez someDirectory / someProjectDir et deux fichiers, file1.py et file2.py, et file1.py essaie d'importer avec cette ligne
à partir du fichier d'importation someProjectDir2
Cela ne fonctionnera pas, même si vous avez désigné someProjectDir comme répertoire source, et même s'il apparaît dans les préférences, le projet, le menu de structure du projet en tant que racine de contenu. La seule façon dont cela fonctionnera est de lier le projet comme indiqué ci-dessus (commande unix, fonctionne sous mac, pas sûr de l'utilisation ou de la syntaxe pour Windows). Il semble qu'il y ait un mécanisme dans lequel Pycharm le fait automatiquement soit lors de l'extraction du contrôle de version, soit en ajoutant en tant que racine de contexte, puisque le lien logiciel a été créé par Pycharm dans un projet dépendant. Par conséquent, copier simplement le même, bien que la réplication étrange du répertoire soit ennuyeuse et que la nécessité soit déroutante. Également dans la dépendance où automatiquement créé, il ne s'affiche pas en tant que nouveau répertoire sous le contrôle de version. Peut-être que la comparaison des fichiers .idea en révélera plus.
la source
La réponse qui a fonctionné pour moi était en effet ce que OP mentionne dans sa mise à jour de 2015: décochez ces deux cases dans votre configuration d'exécution Python:
J'avais déjà configuré la configuration d'exécution pour utiliser le venv approprié, donc PyCharm effectuant un travail supplémentaire pour ajouter des éléments au chemin n'était pas nécessaire. Au lieu de cela, cela causait des erreurs.
la source