Python インタープリターに動的にリンクされた C++ アプリケーションがあります。特定のディレクトリから python モジュールをインポートできるようにしたいと考えています。PYTHONPATH に追加したパスが sys.path に含まれるように、プロセスの PYTHONPATH を変更したいと考えています。このドキュメントによると、それが機能する方法のようです:
http://docs.python.org/c-api/intro.html#embedding-python
ただし、Python-land から sys.path を出力すると、設定した内容ではなく、PYTHONPATH の元の内容が含まれます。これが私がやっていることの例です(Boost.Pythonを使用):
int main(int argc, char* argv[])
{
_putenv_s("PYTHONPATH", "C:\\source\\\\modules");
Py_Initialize();
object main = import("__main__");
object global = (main.attr("__dict__"));
exec("import sys\nprint sys.path"), global, global);
}
PS - 私の目標を達成する他の方法があることは知っていますが、それは私が求めているものではありません. sys.path を設定するときに Py_Initialize() が PYTHONPATH の現在の値を使用しないのはなぜでしょうか。それとも、それがどのように機能するかを誤解していますか?