2016-06-27 11 views
0

この質問は、thisと関連しています。 Pythonのモジュールドキュメントhereを通過した後、それぞれのサブモジュールを含むモジュールに含まれるスクリプトファイルにサブモジュールをインポートできません。次のようにPythonでサブモジュールをインポートする

私のセットアップは次のとおりです。ソースファイルの内容が

python modules

app.py

import sys 

def app(): 
    print("Nice, this file has a __main__ entry point. It doesn't handle arguments though") 


if __name__ == '__main__': 
    # python app.py 2>&1 | less +F 
    app() 

sys.exit(0) 

launcher.py

import sys 
from multiprocessing import Process 
import test_module.test_submodule.app 


p1 = Process(target=app, args=('no args yet',)) 
print("Launcher starting ...") 
p1.start() 

sys.exit(0) 

(初期化ファイルは空白です)。

pycharmのための私の構成は次のとおりです。

python config 2

はなぜアプリの方法は、ランチャースクリプトで呼び出すことはできませんか?スクリプトの実行時に

次のエラーがスローされます。

Connected to pydev debugger (build 145.260) 
Traceback (most recent call last): 
    File "/home/Pycharm/pycharm-community-2016.1/helpers/pydev/pydevd.py", line 1530, in <module> 
    globals = debugger.run(setup['file'], None, None, is_module) 
    File "/home/Pycharm/pycharm-community-2016.1/helpers/pydev/pydevd.py", line 937, in run 
    pydev_imports.execfile(file, globals, locals) # execute the script 
    File "/home/Pycharm/pycharm-community-2016.1/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile 
    exec(compile(contents+"\n", file, 'exec'), glob, loc) 
    File "launcher.py", line 6, in <module> 
    p1 = Process(target=test_module.test_submodule.app, args=('no args yet',)) 
AttributeError: 'module' object has no attribute 'test_submodule' 

答えて

0

あなたlauncher.pyはすでに「test_module」レベルであると思われます。 import test_submodule.appを試しましたか?

EDIT

from test_submodule import app

+0

はい、pycharmだけのプロセスが存在する試してみてください。私は以下のバリエーションを試しました:import test_module.test_submodule.app。 import test_submodule.app、importsなし、コード内のapp.pyへのフルパスを指定します。 – Sebi

+0

@Sebi私の編集をご覧ください=) –

+0

pycharmは "未解決の参照test_submodule"を示しています。コードを実行すると、インポート時にコードが終了します。インポートされる内容が有効である限り、インポートがどのように行われているかは重要ではありません。 – Sebi

関連する問題