首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从C++获取python可执行的完整路径

从C++获取python可执行的完整路径
EN

Stack Overflow用户
提问于 2016-10-04 11:32:23
回答 3查看 824关注 0票数 0

我有一个用C++写的程序。我想从它获得通向python可执行文件的完整路径。例如,如果我打开Windows命令提示符(cmd.exe)并键入python,它将使用来自PATH的python可执行文件。因此,我希望有一个函数get_exec_path("python")返回类似于C:\Python27\python.exe的东西。C:\Python27\在我的PATH里。我需要这个从C++代码调用python脚本。在C++中嵌入python对我来说是个坏主意。我以前这样叫它:

代码语言:javascript
运行
复制
std::system("start \"\" /WAIT python myscript.py --arg1 arg1 --arg2 arg2")

但是这个方法显示命令提示符窗口,我想要一些背景工作。为此,我在第二个参数"C:\Python27\python.exe myscript.py --arg1 arg1 --arg2 arg2"中使用了"C:\Python27\python.exe myscript.py --arg1 arg1 --arg2 arg2"。因此,我需要从PATH变量获得python可执行文件的完整路径。

EN

回答 3

Stack Overflow用户

发布于 2016-10-04 11:57:53

你问错问题了。

不要试图绕过shell (并在此过程中重新创建PATH变量),而是通过将适当的标志传递给start以隐藏命令提示符窗口,从而使其成为您的优势。

根据文献资料的说法,那是/b

启动应用程序而不打开新的命令提示符窗口。

票数 2
EN

Stack Overflow用户

发布于 2016-10-04 12:15:44

有一些解决办法,可以帮助你。

  • 使用C++工具从windows注册表获取。将{ver}替换为实际版本。"3.5“是我的案子。 HKCU\SOFTWARE\Python\PythonCore{ver}\InstallPath\ExecutablePath
  • 使用where.exe实用程序执行路径搜索。它的工作方式类似于linux“哪个”。 C:\Users\admin>where python C:\Users\admin\AppData\Local\Programs\Python\Python35\python.exe
票数 0
EN

Stack Overflow用户

发布于 2016-10-04 12:50:35

当您显示Windows时,这个答案将集中于,而不是可移植的。

精明的函数可以做你想做的事情:

代码语言:javascript
运行
复制
BOOL PathFindOnPath(
  _Inout_  LPTSTR  pszFile,
  _In_opt_ LPCTSTR *ppszOtherDirs
);

它的文档说:

PathFindOnPath搜索pszFile指定的文件。如果没有在ppszOtherDirs中指定目录,则尝试通过搜索标准目录(如System32 )和PATH环境变量中指定的目录来查找文件。

要查找python.exe,您可以这样做:

代码语言:javascript
运行
复制
char path[MAX_PATH] = "python.exe";
BOOL cr = ::PathFindOnPathA(path, NULL);
if (! cr) {
    //process error ...
}
// path now contains the full path

注意:你必须包括shlwapi.h和链接shlwapi.lib .

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39851169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档