簡體   English   中英

安裝Quantlib Python PyQL庫:似乎無法找到Boost

[英]Installing Quantlib Python PyQL library: seems not to be able to find Boost

我正在嘗試安裝包裝Quantlib的Python PyQL庫,但似乎無法找到一些boost頭文件。

我已經有了最新版本的Quantlib(1.3),並且與Boost 1.5一起位於/ usr / local / lib目錄中:

xxx@LILJEN:/usr/local/lib$ ls
boost  boost_1_50_0  libQuantLib.a  libQuantLib.la  libQuantLib.so  libQuantLib.so.0  libQuantLib.so.0.0.0  python2.7  python3.3  QuantLib-1.3  QuantLib-SWIG-1.3  R  site_ruby

我安裝了Cython 0.2:

>>> pkg_resources.get_distribution("Cython").version
'0.20'

當我進入下載軟件包的pyql目錄並執行make build命令時,Boost庫出現問題,否則一切似乎都在“ Cythonizing”。 我注意到Github指令說我應該“修補” Cython 0.16,但是由於我已經是0.2,所以我認為沒有必要。 以下是該構建的內容:

xxx@LILJEN:~/Downloads/pyql$ sudo make build
python setup.py build_ext --inplace
/usr/lib/python2.7/distutils/extension.py:133: UserWarning: Unknown Extension options: 'pyrex_directives'
  warnings.warn(msg)
missing cimport in module 'quantlib.time': quantlib/instruments/credit_default_swap.pyx
missing cimport in module 'quantlib.pricingengines': quantlib/instruments/credit_default_swap.pyx
missing cimport in module 'quantlib.pricingengines': quantlib/instruments/option.pyx
Compiling quantlib/quotes.pyx because it changed.
Compiling quantlib/interest_rate.pyx because it changed.
Compiling quantlib/time/calendar.pyx because it changed.
Compiling quantlib/time/schedule.pyx because it changed.
Compiling quantlib/time/date.pyx because it changed.
Compiling quantlib/time/daycounter.pyx because it changed.
Compiling quantlib/time/daycounters/actual_actual.pyx because it changed.
Compiling quantlib/time/daycounters/thirty360.pyx because it changed.
Compiling quantlib/time/calendars/germany.pyx because it changed.
Compiling quantlib/time/calendars/united_states.pyx because it changed.
Compiling quantlib/time/calendars/united_kingdom.pyx because it changed.
Compiling quantlib/time/calendars/null_calendar.pyx because it changed.
Compiling quantlib/time/calendars/jointcalendar.pyx because it changed.
Compiling quantlib/instruments/swap.pyx because it changed.
Compiling quantlib/pricingengines/credit.pyx because it changed.
Compiling quantlib/pricingengines/swap.pyx because it changed.
Compiling quantlib/pricingengines/bond.pyx because it changed.
Compiling quantlib/pricingengines/blackformula.pyx because it changed.
Compiling quantlib/pricingengines/engine.pyx because it changed.
Compiling quantlib/pricingengines/vanilla/mcvanillaengine.pyx because it changed.
Compiling quantlib/pricingengines/vanilla/vanilla.pyx because it changed.
Compiling quantlib/sim/simulate.pyx because it changed.
Compiling quantlib/processes/bates_process.pyx because it changed.
Compiling quantlib/processes/black_scholes_process.pyx because it changed.
Compiling quantlib/processes/heston_process.pyx because it changed.
Compiling quantlib/math/optimization.pyx because it changed.
Compiling quantlib/termstructures/default_term_structure.pyx because it changed.
Compiling quantlib/termstructures/credit/piecewise_default_curve.pyx because it changed.
Compiling quantlib/termstructures/credit/default_probability_helpers.pyx because it changed.
Compiling quantlib/termstructures/volatility/equityfx/black_vol_term_structure.pyx because it changed.
Compiling quantlib/termstructures/yields/yield_term_structure.pyx because it changed.
Compiling quantlib/termstructures/yields/zero_curve.pyx because it changed.
Compiling quantlib/termstructures/yields/piecewise_yield_curve.pyx because it changed.
Compiling quantlib/termstructures/yields/rate_helpers.pyx because it changed.
Compiling quantlib/termstructures/yields/flat_forward.pyx because it changed.
Compiling quantlib/models/equity/bates_model.pyx because it changed.
Compiling quantlib/models/equity/heston_model.pyx because it changed.
Cythonizing quantlib/instruments/swap.pyx
Cythonizing quantlib/interest_rate.pyx
Cythonizing quantlib/math/optimization.pyx
Cythonizing quantlib/models/equity/bates_model.pyx
Cythonizing quantlib/models/equity/heston_model.pyx
Cythonizing quantlib/pricingengines/blackformula.pyx
Cythonizing quantlib/pricingengines/bond.pyx
Cythonizing quantlib/pricingengines/credit.pyx
Cythonizing quantlib/pricingengines/engine.pyx
Cythonizing quantlib/pricingengines/swap.pyx
Cythonizing quantlib/pricingengines/vanilla/mcvanillaengine.pyx
Cythonizing quantlib/pricingengines/vanilla/vanilla.pyx
Cythonizing quantlib/processes/bates_process.pyx
Cythonizing quantlib/processes/black_scholes_process.pyx
Cythonizing quantlib/processes/heston_process.pyx
Cythonizing quantlib/quotes.pyx
Cythonizing quantlib/sim/simulate.pyx
Cythonizing quantlib/termstructures/credit/default_probability_helpers.pyx
Cythonizing quantlib/termstructures/credit/piecewise_default_curve.pyx
Cythonizing quantlib/termstructures/default_term_structure.pyx
Cythonizing quantlib/termstructures/volatility/equityfx/black_vol_term_structure.pyx
Cythonizing quantlib/termstructures/yields/flat_forward.pyx
Cythonizing quantlib/termstructures/yields/piecewise_yield_curve.pyx
Cythonizing quantlib/termstructures/yields/rate_helpers.pyx
Cythonizing quantlib/termstructures/yields/yield_term_structure.pyx
Cythonizing quantlib/termstructures/yields/zero_curve.pyx
Cythonizing quantlib/time/calendar.pyx
Cythonizing quantlib/time/calendars/germany.pyx
Cythonizing quantlib/time/calendars/jointcalendar.pyx
Cythonizing quantlib/time/calendars/null_calendar.pyx
Cythonizing quantlib/time/calendars/united_kingdom.pyx
Cythonizing quantlib/time/calendars/united_states.pyx
Cythonizing quantlib/time/date.pyx
Cythonizing quantlib/time/daycounter.pyx
Cythonizing quantlib/time/daycounters/actual_actual.pyx
Cythonizing quantlib/time/daycounters/thirty360.pyx
Cythonizing quantlib/time/schedule.pyx
running build_ext
building 'quantlib.cashflow' extension
creating build
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/quantlib
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DHAVE_CONFIG_H -I/usr/local/include -I/usr/include -I. -I./cpp_layer -I/usr/include/python2.7 -c quantlib/cashflow.cpp -o build/temp.linux-x86_64-2.7/quantlib/cashflow.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default]
quantlib/cashflow.cpp:342:32: fatal error: boost/shared_ptr.hpp: No such file or directory
 #include "boost/shared_ptr.hpp"
                                ^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
make: *** [build] Error 1

盡管我已經成功地從頭編譯了Quantlib,並且測試套件可以正常工作,但它似乎已經安裝並可以正常工作,但似乎無法找到boost庫。 關於我可能在哪里出錯的任何提示?

它是Ubuntu 13.10,默認安裝了Python 2.7。 本質上,這是一個新安裝的系統,具有所有最新的庫(Boost除外,我保持在1.5的水平)。

Fwiw python setup.py安裝也不起作用,但是我有常規的SWIG Quantlib庫,可以在Python中正常工作。


附錄

我相信我遇到的“錯誤”是,我密切關注了這個出色的頁面 ,了解如何在Ubuntu上安裝Quantlib。 該頁面討論usr / local / lib目錄中的Boost,我復制並粘貼了它的命令。 Quantlib可以完美編譯,因為按照頁面通過導出命令傳達了Boost目錄,但是pyql還需要在setup.py中指定此目錄。 確保在sys.platform =“ linux2”下的行,將INCLUDE_DIRS指定為usr / local / lib而不是默認的usr / local / include。 我寫此附錄是因為我相信許多用戶也可以在Google上搜索“安裝Quantlib Ubuntu”並找到此頁面,因此許多人可能會再次遇到此問題。

如果您查看啟動編譯器的命令行,則會看到

-I/usr/local/include -I/usr/include -I. -I./cpp_layer -I/usr/include/python2.7

這些標志告訴編譯器在哪里尋找標頭。 您的Boost標頭中沒有任何一個(這很奇怪:標頭通常放在/ usr / local / include中的某個位置。您是否將它們自己復制到/ usr / local / lib中?),因此編譯器找不到它們。

您可以:

  • 將boost目錄移動到/ usr / local / include中(這將是名為“ boost”的目錄,而不是名為“ boost_1_50_0”的目錄),或者
  • 將附加標志-I/usr/local/lib/boost_1_50_0傳遞給編譯器,以便它可以在其當前位置找到它們。 具體方法取決於您的setup.py腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM