从C ++ popen()函数调用Python

时间:2018-02-04 20:47:23

标签: python c++ raspberry-pi

我正在用C ++编写一个小程序,它运行的Python脚本依赖于流行的requests Python模块。我使用C ++的popen()函数来运行Python脚本并像这样读取输入:

std::string command = "./fetch.py";

并将其传递给popen(),如此:

FILE *in = popen(command.c_str(), "r");

然后我在while循环中使用fgets()来获取脚本的所有输出,并将每一行存储在C ++ std::vector<std::string>中。

问题在于运行Python脚本。我已全局安装requests库(不需要虚拟环境,因为这是我的机器将运行的唯一程序),并确保在运行{{1}后可以使用命令sh ./fetch.py运行它}}。但是,当在C ++程序中使用chmod +x ./fetch.py运行时,Python脚本会引发导入错误,声称未找到模块popen()。我已经仔细检查了Python的requests以确保它包含sys.path模块的路径。我也尝试将requests附加到传递给/bin/bash/ -c的命令中,希望用bash运行脚本,同样的事情发生了。

我在Raspberry Pi上运行此操作,使用最新的Raspbian Lite发行版,Linux衍生版,并使用Python 3运行脚本。我使用popen()全局安装了requests模块。我很困惑,为什么我的Python脚本在从命令行运行时可以找到pip3模块,但在我的C ++程序中没有requests,所以我们非常感谢任何帮助或建议!

0 个答案:

没有答案