从C调用python函数时出错

从C调用python函数时出错,python,c,macos,conda,Python,C,Macos,Conda,我试图从C程序调用python函数,但在尝试运行编译后的程序时出现错误: Fatal Python error: initfsencoding: unable to load the file system codec ModuleNotFoundError: No module named 'encodings' Current thread 0x00007fff94214380 (most recent call first): Abort trap: 6 我使用的是macOS High

我试图从C程序调用python函数,但在尝试运行编译后的程序时出现错误:

Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007fff94214380 (most recent call first):
Abort trap: 6
我使用的是macOS High Sierra 10.13.5上安装的
python3.7

为了编译名为
callpy.c
的代码,我使用

gcc -o callpy callpy.c -I/Users/wernop/anaconda3/include/python3.7m -L/Users/wernop/anaconda3/lib/python3.7/config-3.7m-darwin -lpython3.7m
运行时不会出现错误或警告

我看到了这个问题:因此确保设置环境变量

PYTHONPATH='/Users/wernop/anaconda3/bin/python3.7'
PYTHONHOME='/Users/wernop/anaconda3/bin/python3.7'

如果有任何帮助,我将不胜感激。

我不知道是否回答了您的问题,但当我从C调用Python时,我使用PyObjects,它工作得非常好

这里有一些例子:

谢谢您的回复。我还在我的C代码中使用了PyObjects。我认为我的问题不在于C代码,而在于Python环境。您能用-Wall选项运行编译吗。此选项有时会显示有关编译警告的更多详细信息。即使使用-Wall选项,也不会发出警告。我看到了以下问题:致命Python错误:initfsencoding:无法加载文件系统编解码器,因此请确保设置环境变量。您是否未使用环境?@AMC Yes,我使用的是conda基本环境,它位于目录
/Users/wernop/anaconda3
中。我的环境变量应该设置不同吗?呃,
PYTHONPATH='/Users/wernop/anaconda3/bin/python3.7'
没有达到您的预期<代码>PYTHONPATH应该指向库根,而不是可执行文件。运行以下命令:
python3.7-c“导入编码;打印(编码.\uuuu文件\uuuu)
。确保使用anaconda安装中正确的可执行文件。这将打印路径,如
/usr/lib64/python3.7/encodings/\uuu init\uuuuuu.py
。这样就可以设置
PYTHONPATH=“/usr/lib64/python3.7”“
。在代码中打印
sys.path
的内容,以查看
PYTHONPATH
是否正确应用。除此之外,通过运行
python3 config--cflags--ldflags
检查编译所需的标志。是的,我使用的是conda base环境,而不是!对所有内容使用单一环境,特别是基本环境,肯定会导致一系列问题。如果它至少对你所经历的问题负有部分责任,我也不会感到惊讶。我的环境变量应该设置不同吗?我认为不需要手动处理环境变量。你是如何安装康达的?