私はファイルのこの構造を持っています(ディレクトリと矢印ファイルの後):
model -> py_file.py
report -> other_py_file.py
メイン__init__.py
:
import model
import report
モデルディレクトリ:
import py_file
レポートディレクトリ:
import other_py_file
今other_py_file
でpy_file
をインポートしたいのですが、何をしようとしても、そのようなモジュールがないというエラーを出します。
私はこれを試しました:from model import py_file
次に:import py_file
これらの2つのフォルダーは互いに見えないようです。他のディレクトリからファイルをインポートする方法は何ですか? init。pyファイルで追加のインポートを指定する必要がありますか?
実行時にシステムパスに追加できます:
import sys
sys.path.insert(0, 'path/to/your/py_file')
import py_file
これが最も簡単な方法です。
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()