Boost.PythonでいくつかのC++クラスをラップするために使用しているJamfileがあります。JamfileでPythonスクリプトを自動的に実行し、コンパイル後の手順として拡張機能をロードしています。
rule run-test ( test-name : sources + )
{
import testing ;
testing.make-test run-pyd : $(sources) : : $(test-name) ;
}
それで:
PROJECT_NAME = example ;
run-test $(PROJECT_NAME) : $(PROJECT_NAME)_ext test_$(PROJECT_NAME)_ext.py ;
これにより、example_ext.soがビルドされ、test_example_ext.pyが実行されます。これにより、単純な「import example_ext」が実行され、いくつかの基本的なテストが実行されます。
問題は、他のパッケージからいくつかのPythonモジュールをインポートできるようにするためにtest_example_ext.pyが必要なことです。そのため、PYTHONPATHを設定する必要があります。コマンドラインからは、これは問題ではありませんが、bjamは、エクスポートされたとしても、これを生成されたPythonプロセスに引き継ぐようには見えません。
この場合、私は以下に相当するものを探しています:
$ export PYTHONPATH=..
つまり、bjamを実行している場所の1レベル上のPython検索パスを設定します。
私が何とか得た最も近いものは、これが私が望むことをすることを理解することです:
$ bjam pythonpath=..
これは実際に機能します。しかし、コマンドラインに依存するのではなく、Jamfileでこれを設定したいと思います。これはプロパティ<pythonpath>..
であり、どこでも使用できると書かれているbjamマニュアルを読みました。しかし、それはどこにあるかを言いません。
したがって、私の問題は、Jamfileでこのプロパティを指定する方法を理解できないことです。どこに行くの?構文は何ですか?これは、user-config.jamの「importpython;」または「usingpython ...」の一部ですか、それともrun-pydまたはpython-extensionルールの一部ですか?私はこれらすべてを理解も成功もせずにランダムに試しました。
私が見つけたboost_1_50_0/tools/build/v2/tools/python.jam
:
#pythonpath機能は
、run-pydによって設定される#PYTHONPATH環境変数の追加要素を指定します。たとえば、pythonpathを使用して、 #ビルド中の製品の一部である が開発システムのデフォルトパスにインストールされて
いないPythonモジュールにアクセスできます。feature.featurepythonpath::無料のオプションのパス;
これは「pythonpath」プロパティ(別名機能)を宣言しているように見えますが、どのようなコンテキストでしょうか?どこでどのように使用できますか?
そして、このページでは、これらの線に沿ってプロパティを定義する方法を示していますが、実際にはどのように、どこで使用するかについては示していません。