2017-09-20 6 views
1

J'utilise Python 3. J'ai deux fichiers Python dans le même répertoire: first.py et second.py. Au début de first.py, j'utilise:Comment importer un autre fichier Python 3 dans Django Settings.py?

from second import * 

Cependant, il renvoie le message d'erreur suivant:

ModuleNotFoundError: No module named 'second' 

Comment dois-je importer dans first.py?

Mise à jour: Pour clarifier mon cas d'utilisation spécifique, j'essaie de scinder mon settings.py dans Django. J'ai un fichier settings.py principal et un autre qui inclut uniquement les informations confidentielles. J'ai suivi this following documentation qui utilise la ligne suivante dans settings.py:

from settings_local import * 

Notez que settings_local.py est dans le même répertoire. Cependant, il renvoie le message d'erreur suivant:

ModuleNotFoundError: No module named 'settings_local' 

Je sais que le document dit « Certains des exemples ci-dessous doivent être modifiés pour la compatibilité avec Django 1.4 et versions ultérieures. » mais je ne sais pas comment l'utiliser en Python 3.

+1

D'où exécutez-vous le script? Vous devriez être capable d'importer des fichiers Python contenus dans le dossier où vous exécutez le script.Si vous exécutez le script à partir du même dossier que le script, vous ne devriez pas avoir cette erreur. –

+0

Fondamentalement, j'essaie de séparer mon settings.py dans Django. J'ai un fichier settings.py principal et un autre qui inclut uniquement les informations confidentielles. J'ai suivi la documentation suivante, mais cela ne fonctionne pas: https://code.djangoproject.com/wiki/SplitSettings#Multiplesettingfilesimportingfromother – 1man

Répondre

1

Je viens de trouver la solution:

from .settings_local import * 

au lieu de:

from settings_local import * 

Je trouve la solution dans this thread.

0

Vous pouvez ajouter des fichiers en Python ainsi

import sys 
sys.path.insert(0, '/path/to/application/app/folder') 
import file 
+0

Merci pour votre réponse. Mais quand le fichier est dans le même chemin, pourquoi devrais-je lui donner un chemin absolu? – 1man

+0

Il y a plus de clarté dans le chemin absolu :) –

0
you can create __init__.py in current directory. 

vous pouvez utiliser:

from second import * 

Le initialisation Des fichiers .py sont requis pour que Python traite les répertoires comme contenant des paquets; Ceci est fait pour empêcher les répertoires avec un nom commun, comme une chaîne, de masquer involontairement des modules valides qui apparaissent plus tard dans le chemin de recherche du module. Dans le cas le plus simple, init .py peut simplement être un fichier vide, mais il peut également exécuter le code d'initialisation du package ou définir la variable __all__, décrite plus tard.

+0

J'ai déjà init.py dans le même répertoire. – 1man

+0

@ 1man 'désolé, __init __. Py' – wwl1991

+0

Oui, j'ai déjà ce fichier. C'est créé par Django. – 1man

0

Vous devriez être en mesure d'ajouter automatiquement le répertoire que le fichier est au PATH, puis importer l'autre fichier, avec ceci:

import sys 
import os 
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) 
import second