2017-10-05 1 views
0

Pour certaines raisons, je ne peux pas importer mes propres modules dans ce format import module.Erreur d'importation pour les modules personnalisés Python dans Pycharm

IDE: PyCharm version Python: 3

fichiers:

projectname/scr/test1.py 
projectname/scr/test2.py 

test1.py:

def print_value(x) 
    print x 

test2.py:

import test1 

value = 5 
test1.print_value(value) 

montre PyCharm éditeur moi l'erreur suivante.

import test1 # Error: No module named test1 

Cependant, quand je lance le code (python test2.py), il fonctionne très bien. Le seul problème est que je ne reçois pas de recommandations pour les fonctions test1 ou les variables comme quand je tape test, rien n'apparaît comme suggestion. C'est un comportement un peu étrange de pycharm.

Cependant, si je déplace ces fichiers dans l'ordre de la hiérarchie des dossiers, tout fonctionne correctement, aucune erreur et suggestions appropriées ne sont données lorsque je tape test1.something.

fichiers:

projectname/test1.py 
projectname/test2.py 

Toute explication à cela? Pourquoi ça ne marche pas dans le dossier src?

Mise à jour: résolu le problème en marquant le src comme root sources inspiré par ce StackOverflow question. Je ne comprends toujours pas pourquoi c'est arrivé et pourquoi la définition de ce répertoire en tant que source racine résout ce problème mais cela fonctionne pour le moment.

+0

__init__.py est disponible dans scr? – Sosel

+0

@Sosel oui, il est disponible dans le dossier src. – utengr

+0

que contient sys.path lorsque vous exécutez test3.py? En outre, c'est __init__.py, pas init.py –

Répondre

0

Résolu le problème en marquant le src en tant que sources racines inspirées de ce StackOverflow question. Je ne comprends toujours pas pourquoi c'est arrivé et pourquoi la définition de ce répertoire en tant que source racine résout ce problème mais cela fonctionne pour le moment.

0

modules situés au même endroit doivent être importés sans aucun problème

0
import sys 
sys.path.insert(0,'projectname/scr') 
from test1 import anything 

Je pense, que cela vous aide. En insérant ce chemin dans les chemins disponibles à l'index 0, vous pouvez facilement appeler votre module.