pycharmでpython＋subprocessが上手く動かないときの対処方法

subprocessを使ってCLIコマンドを実行するpythonプログラムがterminal/コマンドプロンプトからは動くのにpycharmから実行すると動かない、という場合の対処方法をメモしておきます。

# 試行環境
Windows10
PyCharm2018.1.1 community edition
python3.6

# 起こったこと
CLIで動作するkaggle APIをpythonのsubprocessを使って操作するスクリプトを作成してpycharmで実行しようとしたんですがエラーが出て動きませんでした。

```python:python
import subprocess

text = subprocess.check_output(['kaggle', 'competitions', 'list'], shell=True)
text = text.decode('cp932')
print(text)
```

```python:pycharmで実行した結果
'kaggle' �́A�����R�}���h�܂��͊O���R�}���h�A
����\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
Traceback (most recent call last):
  File "E:/python/code/test2.py", line 3, in <module>
    text = subprocess.check_output(['kaggle', 'competitions', 'list'], shell=True)
  File "E:\Anaconda3\envs\tf\lib\subprocess.py", line 356, in check_output
    **kwargs).stdout
  File "E:\Anaconda3\envs\tf\lib\subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['kaggle', 'competitions', 'list']' returned non-zero exit status 1.

Process finished with exit code 1
```
ところがコマンドプロンプトから実行すると正常に動きます。

```python:コマンドプロンプトで実行した結果
ref                                            deadline             category            reward  teamCount  userHasEntered  
---------------------------------------------  -------------------  ---------------  ---------  ---------  --------------  
digit-recognizer                               2030-01-01 00:00:00  Getting Started  Knowledge       2526            True  
titanic                                        2030-01-01 00:00:00  Getting Started  Knowledge      12367            True  
house-prices-advanced-regression-techniques    2030-01-01 00:00:00  Getting Started  Knowledge       4798           False  
imagenet-object-localization-challenge         2029-12-31 07:00:00  Research         Knowledge         55           False  
competitive-data-science-predict-future-sales  2019-12-31 23:59:00  Playground           Kudos       4488            True  
ashrae-energy-prediction                       2019-12-19 23:59:00  Featured           $25,000        365           False  
Kannada-MNIST                                  2019-12-17 23:59:00  Playground       Knowledge        403           False  
```

# 何が問題だったか

pycharmのシェルから実行したいファイルにPATHが通っていないのが原因でした。

コマンドプロンプトからconda activateコマンドで環境を有効にすると使いたい環境にPATHが通るんですが、pycharmはPATHを通すのではなくて直接python.exeを実行するので同じ仮想環境を使っていてもPATHは通っていません。

# 対処方法

Pycharm → Run → Edit Configuration → Environment variableと入っていって、PATHに実行したい環境と同じPATHを記入します。実行したい環境のPATHは以下で確認できます。

```terminal:コマンドプロンプト
echo %path%
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/d205c8bb-6fe8-0ba4-3209-ce8fe8c2082c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/e98f84d0-7e8c-4ced-5639-337cf68e88f0.png)

# 結果

```python:Pycharmで実行した結果
ref                                            deadline             category            reward  teamCount  userHasEntered  
---------------------------------------------  -------------------  ---------------  ---------  ---------  --------------  
digit-recognizer                               2030-01-01 00:00:00  Getting Started  Knowledge       2526            True  
titanic                                        2030-01-01 00:00:00  Getting Started  Knowledge      12367            True  
house-prices-advanced-regression-techniques    2030-01-01 00:00:00  Getting Started  Knowledge       4798           False  
imagenet-object-localization-challenge         2029-12-31 07:00:00  Research         Knowledge         55           False  
competitive-data-science-predict-future-sales  2019-12-31 23:59:00  Playground           Kudos       4488            True  
ashrae-energy-prediction                       2019-12-19 23:59:00  Featured           $25,000        365           False  
Kannada-MNIST                                  2019-12-17 23:59:00  Playground       Knowledge        403           False  
```
やったね！