我正在用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
,所以我们非常感谢任何帮助或建议!