モジュールdata
を同じフォルダにあるモジュールautoencoder
からインポートしても、モジュールが検索されるパスは常に最初に実行されるファイルを含むパスなので、パスはrun.py
ですあなたの場合。 autoencoder
とdata
の両方がae
サブディレクトリにあります。あなたがやってrun.py
からautoencoder
を輸入し
:import ae.autoencoder
をあなたは同じようにdata
をインポートすることができます。それbecaseインポートae.data
はまだあなたがae
ディレクトリを入力する必要がrun.py
のパスを指します。
いつもフォルダに言及しないようにするには、ae
ディレクトリをシステムパスに追加することができます。
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "./ae")
ですから、run.pyファイルのようになります。
オープンrun.py
は、その後、あなたはまたsys
モジュール、そして
をインポートし、すでにインポートされたモジュールos
が必要これは:
import os
import shutil
import sys
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "./ae")
import autoencoder
def main():
pass
if __name__ == "__main__":
main()
そして、あなたのautoencoder.pyは次のようになります。
import data
IDEを使用していて、sys.path.append
メソッドをしようとした場合、モジュールautoencoder
とdata
がIDEによって発見されていないとして、それが表示されることがありますが、実際にはパスが含まれているため実行時に見つかるため、実行する必要があります。
同じディレクトリにモジュールをロードする別の方法がある:あなたが実行時に多くのモジュールまたはインポートモジュールをインポートする必要がある場合には
from . import module_name
IMPを使用することをお勧めします(現在は非推奨)またはimportlibモジュール。 Pythonの3.5+のために
:
のPython 3.3と3.4の場合
import importlib.util
spec = importlib.util.spec_from_file_location("module_name", "/path/to/file")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.MyClass()
:
Pythonの2のために
from importlib.machinery import SourceFileLoader
foo = SourceFileLoader("module_name", "/path/to/file").load_module()
foo.MyClass()
:
import imp
foo = imp.load_source('module_name', '/path/to/file')
foo.MyClass()
「から」を試してください。インポートデータ ' – vaultah
は' import data.py'ではなく単に 'import data'であってはなりません –
' from data import * ' –