web-dev-qa-db-ja.com

別のディレクトリから.pyファイルをインポートする方法は?

私はファイルのこの構造を持っています(ディレクトリと矢印ファイルの後):

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

メイン__init__.py

import model
import report

モデルディレクトリ:

import py_file

レポートディレクトリ:

import other_py_file

other_py_filepy_fileをインポートしたいのですが、何をしようとしても、そのようなモジュールがないというエラーを出します。

私はこれを試しました:from model import py_file

次に:import py_file

これらの2つのフォルダーは互いに見えないようです。他のディレクトリからファイルをインポートする方法は何ですか? init。pyファイルで追加のインポートを指定する必要がありますか?

30
Andrius

実行時にシステムパスに追加できます:

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

import py_file

これが最も簡単な方法です。

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)

この方法を使用して、フォルダー構造内の任意の方法をインポートできます(逆方向、順方向は実際には重要ではありません。念のため絶対パスを使用します)。

Python2の同様の答えを提供してくれた Sebastian への称賛:

import imp

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