web-dev-qa-db-fra.com

Comment importer un fichier .py depuis un autre répertoire?

J'ai cette structure de fichiers (répertoire et après les fichiers arrow):

model -> py_file.py 
report -> other_py_file.py

principale __init__.py:

import model
import report

répertoire modèle:

import py_file

répertoire de rapport:

import other_py_file

maintenant en other_py_file Je veux importer py_file, mais peu importe ce que j'essaie, je donne l'erreur de ne pas avoir un tel module.

J'ai essayé ceci: from model import py_file

Ensuite: import py_file

On dirait que ces deux dossiers ne se voient pas. Quel est le moyen d'importer un fichier depuis un autre répertoire? Dois-je spécifier des importations supplémentaires dans les fichiers init. Py?

30
Andrius

Vous pouvez ajouter au chemin du système au moment de l'exécution:

import sys
sys.path.insert(0, 'path/to/your/py_file')

import py_file

C'est de loin le moyen le plus simple de le faire.

52
Alex Thornton

Python3:

import importlib.machinery

loader = importlib.machinery.SourceFileLoader('report', '/full/path/report/other_py_file.py')
handle = loader.load_module('report')

handle.mainFunction(parameter)

Cette méthode peut être utilisée pour importer ce que vous voulez dans une structure de dossiers (l’inverse, l’avant, n’importe pas vraiment, j’utilise des chemins absolus pour être sûr).

Félicitations à Sebastian pour l'application d'une réponse similaire pour Python2:

import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()
18
Torxed