2017/03/21

バッチファイルで virtualenv activate する

Windows でタスク処理をする必要が出てきたので、超久しぶり10年以上…か?にバッチファイルを書きました。

と言っても、処理自体は Python で書いて、起動をバッチファイルで行うだけなので簡単・・・と思っていたら、ハマりました。

### activate しようとすると止まってしまう
私が最初に書いたバッチファイルが以下です。

`test` という名前の virtualenv を activate して、`main.py` を実行するだけ。
当然、問題なく動くと思ったのですが、`activate.bat` を呼んだ直後に止まってしまうのですちなみに、`%HOME%` はホームディレクトリを指定してます。

```
"%HOME%\Envs\test\Scripts\activate.bat"

cd "%HOME%\tasks"

python main.py
```

### バッチファイル中からバッチファイルを呼ぶ時は `call` を使う
調べてみたら、バッチファイルを直接記述で呼び出すと止まるらしいイケて無いと思うのは私だけ?。

> 参考
> - [Windows、バッチファイルからバッチファイルを呼び出す方法あれこれ|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~](http://piyopiyocs.blog115.fc2.com/blog-entry-280.html)

というわけで、`activate.bat` の呼び出しに `call` をつければオーケーでした。

```
call "%HOME%\Envs\test\Scripts\activate.bat"

cd "%HOME%\tasks"

python main.py
```

0 件のコメント: