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.

Original source

Related problems