【发布时间】:2019-08-13 19:35:47
【问题描述】:
我正在尝试将 python 嵌入到 C 应用程序中。目前,我正在尝试使以下 hello world 样式示例正常工作
#include <..../anaconda3/include/python3.7m/Python.h> // I've abbreviated this path for privacy
int main()
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\nprint('Today is', ctime(time()))\n");
Py_FinalizeEx();
return(EXIT_SUCCESS);
}
我已经能够编译这个示例,但是当我运行它时出现以下错误
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
我安装了多个版本的 python(python3,我使用的是 macOS)并且想要运行我已经安装的特定 anaconda 版本。据我了解上述问题,我收到此错误的原因是因为我需要为 python 提供特定路径来查找库/模块。设置 PYTHONHOME 和/或 PYTHONPATH 应该可以解决这个问题。但是,我不确定我应该将此值设置为什么。
我的问题有两个。 (1) 我是否正确诊断出问题? (2)如果是这样,我应该将这两个环境变量设置为什么?具体来说,具体路径是什么?虽然还有其他几篇关于这个问题的帖子似乎没有给出路径应该是什么(我尝试将 PYTHONHOME 变量设置为“..../anaconda”,因为this 帖子中的一个答案指出应该将它设置为python的bin文件的父文件夹,在这种情况下是anaconda。这样做并没有解决问题。)。
编辑:
应用@John Bollinger 建议的更改似乎可以部分解决问题。现在产生的错误是
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
【问题讨论】: