我有一個Jamfile,我正在使用Boost.Python來包裝一些C++類。我有自動的Jamfile運行python腳本和加載擴展的編譯後步驟:使用bjam的pythonpath功能
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」然後進行一些基本的測試。
問題是我需要test_example_ext.py能夠從其他包中導入一些Python模塊,所以我需要設置PYTHONPATH。從命令行來說,這不是問題,但是bjam似乎並沒有把它貫徹到它產生的Python過程中,即使導出。
在這種情況下,我在尋找等價的:
$ export PYTHONPATH=..
即將Python搜索路徑設置在我正在運行bjam的上一級。
我已經成功地get最接近的是制定出這個我想要做什麼:
$ bjam pythonpath=..
這實際工作。但我想在Jamfile中設置它,而不是依賴命令行。我讀過bjam手冊,說這是一個屬性,我可以在某處使用<pythonpath>..
。但它沒有說明在哪裏。
所以我的問題是,我不能解決如何在Jamfile中指定此屬性。它在哪裏?語法是什麼?它是user-config.jam中的「import python;」還是「using python ...」的一部分,還是run-pyd或python-extension規則的一部分?我已經嘗試了所有這些隨機沒有理解或成功。
在boost_1_50_0/tools/build/v2/tools/python.jam
我發現:
#的PYTHONPATH功能指定爲PYTHONPATH
#環境變量,通過運行PYD設置附加元件。例如,pythonpath可用於訪問正在構建的產品的Python模塊,但不是
#安裝在開發系統的默認路徑中的Python模塊。
feature.feature pythonpath::free可選路徑;
這似乎是聲明'pythonpath'屬性(aka功能),但爲什麼上下文?在哪裏以及如何使用它?
而this頁面演示瞭如何沿這些行定義屬性,但不是真正如何或在何處使用它。