首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入python:版本与ProgramFullPath不一致

嵌入python:版本与ProgramFullPath不一致
EN

Stack Overflow用户
提问于 2016-08-22 19:44:48
回答 1查看 298关注 0票数 1

我的path中首先有anaconda python,但是一个简单的Python嵌入示例显示了我的Mac system Python版本,尽管ProgramFullPath正确地指向了anaconda python。有没有一种方法可以正确地找到/使用蟒蛇?

最小示例:

代码语言:javascript
复制
#include <Python.h>
#include <stdio.h>

int main(void) {
    Py_Initialize();
    printf("Python version:\n%s\n", Py_GetVersion());
    printf("Python Program Full Path:\n%s\n", Py_GetProgramFullPath());
    Py_Finalize();
    return 0;
}

我用以下命令编译:

代码语言:javascript
复制
gcc `python-config --cflags` example.c `python-config --ldflags`

或者,扩展python-config调用的结果,

代码语言:javascript
复制
gcc -I/Users/ryandwyer/anaconda/include/python2.7 \
    -I/Users/ryandwyer/anaconda/include/python2.7 \
    -fno-strict-aliasing -I/Users/ryandwyer/anaconda/include \
    -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes \
    example.c -lpython2.7 -ldl -framework CoreFoundation -u _PyMac_Error

运行程序会给出,

代码语言:javascript
复制
Python version:
2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
Python Program Full Path:
/Users/ryandwyer/anaconda/bin/python

这似乎和Embed python in c++: choose python version的问题是一样的。我还尝试了设置PYTHONHOMEPy_SetProgramNamePy_SetPythonHome,但无法让Python_GetVersion()返回蟒蛇版本。

EN

回答 1

Stack Overflow用户

发布于 2017-10-25 09:08:57

在你链接的帖子里有部分答案。

选项1:按如下方式运行您的程序

LD_LIBRARY_path=/path_to_anaconda/lib./program

选项2:在终端中运行以下命令,然后运行您的程序

export LD_LIBRARY_path=/path_to_anaconda/lib./program

选项3:将以下行添加到.bashrc文件的末尾

LD_LIBRARY_PATH=/path_to_anaconda/lib

为什么在嵌入python时必须这样做,而在正常运行解释器时却不需要?我不知道,但是如果某个Python/C高手偶然发现了这篇文章,我很想知道为什么。

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

https://stackoverflow.com/questions/39078683

复制
相关文章

相似问题

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