Windows で Fabric に自動応答させる
環境作り
env.py -c fabric easy_install pycrypto-2.6.win32-py2.7.exe easy_install fabric
winexpect
Python Fabric で、自動応答 -- pexpect - Guutaraの日記 を試してみたけれど、pexpect は Windows では動かないらしい。
代わりということで winpexpect を使ってみた。
easy_install pywin32-218.win32-py2.7.exe easy_install winpexpect
試しに実行。
fab init [127.0.0.1:2222] Executing task 'init' Traceback (most recent call last): File "C:\virtualenv\fabric\lib\site-packages\fabric-1.6.0-py2.7.egg\fabric\main.py", line 739, in main *args, **kwargs File "C:\virtualenv\fabric\lib\site-packages\fabric-1.6.0-py2.7.egg\fabric\tasks.py", line 316, in execute multiprocessing File "C:\virtualenv\fabric\lib\site-packages\fabric-1.6.0-py2.7.egg\fabric\tasks.py", line 213, in _execute return task.run(*args, **kwargs) File "C:\virtualenv\fabric\lib\site-packages\fabric-1.6.0-py2.7.egg\fabric\tasks.py", line 123, in run return self.wrapped(*args, **kwargs) File "C:\Users\hokorobi\Documents\Program\Python\fabric\vagrant\fabfile.py", line 16, in init fexpect('init_aptget', 'Do you want to continue', 'Y') File "C:\Users\hokorobi\Documents\Program\Python\fabric\vagrant\fabfile.py", line 10, in fexpect child = winspawn(cmd) File "C:\virtualenv\fabric\lib\site-packages\winpexpect-1.5-py2.7.egg\winpexpect.py", line 346, in __init__ logfile=logfile, cwd=cwd, env=env) File "C:\virtualenv\fabric\lib\site-packages\winpexpect-1.5-py2.7.egg\pexpect.py", line 429, in __init__ self._spawn (command, args) File "C:\virtualenv\fabric\lib\site-packages\winpexpect-1.5-py2.7.egg\winpexpect.py", line 401, in _spawn startupinfo) pywintypes.error: (2, 'CreateProcess', '\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83t\x83@\x83C\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B')
どうも virtualenv を使っていると駄目みたい。
sys.exec_prefix の python.exe を見にいっているみたいで、virtualenv を使っていると python.exe は Scripts の中にあるのか。
とりあえず素の環境でこんなの動かした。
fork 版 winexpect
winpexpect / weyou こちらの winpexpect だと virtualenv でも使えるみたい。
env.py fabric pip uninstall winpexpect hg clone ssh://hg@bitbucket.org/weyou/winpexpect cd winpexpect python setup.py install fab init
動いた。