Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在虚拟环境中从C++;Windows上的程序?_Python_C++_Windows_Process_Virtualenv - Fatal编程技术网

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()