前提・実現したいこと
二つのPythonスクリプトtest.pyとhelloworld.pyがあります。
test.pyからhelloworld.pyを、anaconda上で作成した環境を用いて呼び出し、
その出力を取得したいです。
subprocessを利用した出力の取得については以下の質問を参考にしています。
https://teratail.com/questions/158178
発生している問題・エラーメッセージ
出力が得られない。出力をprintすると空文字が3行帰ってくる
該当のソースコード
- test.py
Python
1import subprocess 2 3conda_activate_path = 'C:\hoge\Anaconda2\Scripts\activate.bat' 4conda_env_name = 'fuga' 5script_path = 'C:\hoge\script\' 6script_name = 'helloworld.py' 7 8cmd = "cd {}\ncall {}\ncall activate {}\npython {}\n" \ 9 .format(script_path, conda_activate_path, conda_env_name, script_name) 10print(cmd) 11# cd C:\hoge\script\ 12# call C:\hoge\Anaconda2\Scripts\activate.bat 13# call activate fuga 14# python helloworld.py 15proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) 16while True: 17 print(proc.stdout.readline().decode("utf8")) 18 if proc.poll() is not None: 19 break
- helloworld.py
Python
1import sys 2print('Hello World! version is ' + sys.version)
試したこと
- cmd文字列の区切りを\nから;に変更して試してみた
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
が出力された - cmd文字列を新しく起動したコマンドプロンプトにそのままコピー&ペーストしてみた
期待した動作になった。(Hello World! version is 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]
が出力された)
補足情報(FW/ツールのバージョンなど)
Python 3.8.5
conda 4.8.3
Windows 10
あなたの回答
tips
プレビュー