subprocess.Popen: mkvirtualenv not found
python, virtualenvwrapper
Solution
`mkvirtualenv` might be a shell function that is added to your environment by sourcing `virtualenvwrapper.sh` script from your shell's startup file. The default command invoked on `shell=True` (e.g., `/bin/sh -c ...`) might not read it.
You could source the file explicitly:
import pipes
from subprocess import check_call
check_call("""source /path/to/virtualenvwrapper.sh &&
mkvirtualenv --no-site-packages """ + pipes.quote(envname),
executable='bash', shell=True)
Problem
I'm using virtualenvwrapper in my deployment. To setup new environments, I'm running a python script, which contains all needed steps. The setupscript includes: ``` cmd = 'mkvirtualenv %s --no-site-packages'%('testname') head = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in head.stdout.read().splitlines(): print line ``` The output is: ``` /bin/sh: mkvirtualenv: not found ``` How can I correctly use virtualenvwrapper within my python script? EDIT: The following code works for me: ``` cmd = 'source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv %s --no-site-packages'%('testname') head = subprocess.Popen(cmd, executable='bash', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in head.stdout.read().splitlines(): print line ``` Thanks for all answers.