Running a subprocess in a venv

Thomas Passin list1 at tompassin.net
Sat Oct 21 12:25:51 EDT 2023


On 10/21/2023 11:32 AM, Larry Martell via Python-list wrote:
> On Sat, Oct 21, 2023 at 9:49 AM Johannes Findeisen <mailman at hanez.org> wrote:
>>
>> On Sat, 21 Oct 2023 09:01:18 -0400
>> Larry Martell via Python-list <python-list at python.org> wrote:
>>
>>> I have a python script, and from that I want to run another script in
>>> a subprocess in a venv. What is the best way to do that? I could write
>>> a file that activates the venv then runs the script, then run that
>>> file, but that seems messy. Is there a better way?
>>
>> How do you do that?
> 
> How? Open a file and write the commands I need then invoke that.
> 
>> It sounds messy but not wrong...
>>
>> I would activate the venv and then run my Python script. In the Python
>> script you can call another python script in a subprocess like this:
>>
>> import sys
>> import subprocess
>>
>> # https://docs.python.org/3/library/subprocess.html#popen-constructor
>> proc = subprocess.Popen([sys.executable, "/path/to/an/otherscript.py"])
>>
>> # https://docs.python.org/3/library/subprocess.html#popen-objects
>> # Do your process communication/handling... proc.communicate(),
>> # proc.wait(), proc.terminate(), proc.kill() etc.
>>
>> Is this the answer you are looking for?
>>
>> Detailed docs: https://docs.python.org/3/library/subprocess.html
> 
> I know how to use Popen. What I was missing was running the script
> using sys.executable. Thanks.

A nice feature of using sys.executable is that you automatically use the 
same Python installation as your invoking program is running with.  On a 
system that has several different Python installations, that's a very 
good thing.



More information about the Python-list mailing list