Python 如何在虚拟环境中从C++;Windows上的程序?
到目前为止,我使用的是两步方法,启动Python 如何在虚拟环境中从C++;Windows上的程序?,python,c++,windows,process,virtualenv,Python,C++,Windows,Process,Virtualenv,到目前为止,我使用的是两步方法,启动cmd.exe,而不是python.exe。但是我不喜欢进程树之间的cmd.exe,原因有几个(例如,我没有收到python进程句柄或ID,而是收到cmd.exe) 我相信要激活虚拟环境,我需要将它放在路径环境变量的开头,并设置一些其他变量,如PYTHONHOME和PYTHONPATH,但我不确定这是否足够,以及在Windows上设置什么值。您不需要激活环境,只需运行特定的python.exe即可。例如,C:\\venv\\SomeEnv\\Bin\\pyth
cmd.exe
,而不是python.exe
。但是我不喜欢进程树之间的cmd.exe
,原因有几个(例如,我没有收到python进程句柄或ID,而是收到cmd.exe
)
我相信要激活虚拟环境,我需要将它放在
路径
环境变量的开头,并设置一些其他变量,如PYTHONHOME
和PYTHONPATH
,但我不确定这是否足够,以及在Windows上设置什么值。您不需要激活环境,只需运行特定的python.exe即可。例如,C:\\venv\\SomeEnv\\Bin\\python.exe子程序\\my_script.py
。如果安装了py启动器并将其与.py文件关联(默认安装),则只需在“my_script.py”中添加一个shebang,例如#!C:\path\to\venv\SomeEnv\Scripts\python.exe
。然后,“my_script.py”将通过脚本本身本地的配置通过ShellExecuteW
执行,而无需硬编码解释器路径,以便在要运行脚本的任何地方使用。@Sraw,Windows中的venv虚拟环境使用“Scripts”文件夹而不是Unix“bin”目录。
If you want to do it using standard C++, you can go for std::system()
std::system("command_to_run_with_space_separated_params_if_any");
If you want to use windows ways, you can go for followings...
ShellExecuteEx()
ShellExecute()
CreateProcessA()
CreateProcessW()
If you want to do it using standard C++, you can go for std::system()
std::system("command_to_run_with_space_separated_params_if_any");
If you want to use windows ways, you can go for followings...
ShellExecuteEx()
ShellExecute()
CreateProcessA()
CreateProcessW()