2016-08-22 3 views
1

私は自分のパス上で最初にanaconda Pythonを持っていますが、代わりにProgramFullPathが正しくanaconda pythonを指していても、単純なPythonの埋め込み例が私のMacシステムのpythonバージョンを示しています。 anaconda pythonを正しく検索/使用する方法はありますか?私はPythonを埋め込む:ProgramFullPathと矛盾するバージョン

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 

は、プログラムを実行すると、

gcc `python-config --cflags` example.c `python-config --ldflags` 

または、呼び出しの結果を拡張し、で与えるコンパイル

#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; 
} 

最小限の例

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()を取得してanacondaバージョンに戻すことはできません。

答えて

1

あなたがリンクした投稿に部分的な回答がありました。

オプション1:

LD_LIBRARY_PATHを次のようには、あなたのプログラムを実行します=/path_to_anaconda/libに./program

オプション2:を実行し、端末で以下のコマンドは、プログラムを実行

輸出LD_LIBRARY_PATH =/path_to_anaconda/libに ./program

オプション3:は、あなたのpythonを埋め込む際に、これを行うために持っていますが、通常はインタプリタを実行していないときなぜ

LD_LIBRARY_PATH =/path_to_anaconda/

libにあなたの.bashrcファイルの末尾に次の行を追加しますか?私は考えていませんが、Python/Cの一部のウィザードがこの投稿につまずくと、なぜその理由が分かりますか?

関連する問題