ImportError: No module named pexpect
fabric, fexpect, pexpect, python
Solution
Found the solution.
pexpect was not part of the remote machine's Python installation.
I simply executed
sudo -E pip install pexpect
on the remote machine.
Problem
I am using Fabric and would like to use fexpect. I have the following Python script: ``` from ilogue.fexpect import expect, expecting, run (...) def install_postgresql(profile): print("!!! Installing PostgreSQL...") print(' -> Doing pre-cleanup...') # Remove PostgreSQL if it exists prompts = [] prompts += expect('Do you want to continue [Y/n]? ', 'Y') with settings(warn_only=True): with expecting(prompts): run('sudo apt-get purge postgresql') print(' -> Doing actual installation...') # Install PostgreSQL prompts = [] prompts += expect('Do you want to continue [Y/n]? ', 'Y') with expecting(prompts): run('sudo apt-get install postgresql') # In some cases PostgreSQL has issues with Ubuntu's default kernel params # that prevent PostgreSQL to start automatically, so we try to start it # TODO: Fix it with settings(warn_only=True): run('sudo service postgresql start') ``` When executing I get the following error: ``` [xxx.xxx.xxx.xxx] out: Traceback (most recent call last): [xxx.xxx.xxx.xxx] out: File "/tmp/fexpect_MbW3QP6Zpy5KBjBGQcaYxi", line 4, in <module> [xxx.xxx.xxx.xxx] out: import pexpect [xxx.xxx.xxx.xxx] out: ImportError: No module named pexpect ``` I am using virtualenv and pexpect is actually installed: ``` (venv)PALM00545424A:woopup i841712$ pip install pexpect Requirement already satisfied (use --upgrade to upgrade): pexpect in ./venv/lib/python2.7/site-packages ```