0
この質問は、thisと関連しています。 Pythonのモジュールドキュメントhereを通過した後、それぞれのサブモジュールを含むモジュールに含まれるスクリプトファイルにサブモジュールをインポートできません。次のようにPythonでサブモジュールをインポートする
私のセットアップは次のとおりです。ソースファイルの内容が
:
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のための私の構成は次のとおりです。
はなぜアプリの方法は、ランチャースクリプトで呼び出すことはできませんか?スクリプトの実行時に
次のエラーがスローされます。
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'
はい、pycharmだけのプロセスが存在する試してみてください。私は以下のバリエーションを試しました:import test_module.test_submodule.app。 import test_submodule.app、importsなし、コード内のapp.pyへのフルパスを指定します。 – Sebi
@Sebi私の編集をご覧ください=) –
pycharmは "未解決の参照test_submodule"を示しています。コードを実行すると、インポート時にコードが終了します。インポートされる内容が有効である限り、インポートがどのように行われているかは重要ではありません。 – Sebi