I'm attempting to run virtualenvwrapper.sh
commands (ie: lsvirtualenv and mkvirtualenv).
I attempted to use
subprocess.call(["lsvirtualenv"])
but it does not seem to work. It gives me the following error message:
Traceback (most recent call last):
File "importMaster.py", line 6, in <module>
virtualEnvs = subprocess.call(["lsvirtualenv"])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1308, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Since these functions are inside of the virtualenvwrapper.sh
file, how would I go about referencing the function in a python script?
TIA
You need to use source $(which virtualenvwrapper.sh) && <your command>
with shell=True
.
Example:
>>> from __future__ import print_function
>>> from subprocess import Popen, PIPE
>>> p = Popen("source $(which virtualenvwrapper.sh) && lsvirtualenv", shell=True, stdout=PIPE)
>>> print(p.stdout.read())
10leds
======
ambientlight
============
See the documentation for the Popen Constructor.