Интересно, если вы можете мне помочь.
Я пытаюсь установить Anaconda / Boost / Quantlib для подтверждения концепции финансового рынка (определение потенциального форвардного риска контрагента с помощью Spark).
Я использую AWS EC2 Linux 2 (x86 - 64 бит) экземпляр.
Я столкнулся с ошибкой импорта при попытке загрузить модуль QuantLib в Python ( _QuantLib. cpython -37m-x86_64- linux -gnu.so: неопределенный символ: _ZTIN8QuantLib5EventE), для которого не удается найти решение.
Пожалуйста, дайте мне знать, какая дополнительная информация необходима для диагностики проблемы. С нетерпением жду Вашего ответа.
ВЫХОДЫ ИЗ УСТАНОВКИ
Я могу успешно скомпилировать и запустить файлы Quantlib в каталоге «Примеры», например, CDS, Bermudianswaption.
Однако я не могу импортировать Quantlib в Python:
$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import QuantLib as qltest
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/anaconda/lib/python3.7/site-packages/QuantLib-1.18-py3.7-linux-x86_64.egg/QuantLib/__init__.py", line 21, in <module>
from .QuantLib import *
File "/usr/local/anaconda/lib/python3.7/site-packages/QuantLib-1.18-py3.7-linux-x86_64.egg/QuantLib/QuantLib.py", line 13, in <module>
from . import _QuantLib
ImportError: /usr/local/anaconda/lib/python3.7/site-packages/QuantLib-1.18-py3.7-linux-x86_64.egg/QuantLib/_QuantLib.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZTIN8QuantLib5EventE
ТАКЖЕ
$ make -C Python check
make: Entering directory `/usr/local/QuantLib-SWIG-1.18/Python'
make check-am
make[1]: Entering directory `/usr/local/QuantLib-SWIG-1.18/Python'
make check-local
make[2]: Entering directory `/usr/local/QuantLib-SWIG-1.18/Python'
/usr/local/anaconda/bin/python3 setup.py test
running test
running build
running build_py
running build_ext
Traceback (most recent call last):
File "setup.py", line 258, in <module>
'build_ext': my_build_ext
File "/usr/local/anaconda/lib/python3.7/site-packages/setuptools/__init__.py", line 144, in setup
return distutils.core.setup(**attrs)
File "/usr/local/anaconda/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/local/anaconda/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/local/anaconda/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "setup.py", line 61, in run
module = __import__('QuantLibTestSuite', globals(), locals(), [''])
File "test/QuantLibTestSuite.py", line 22, in <module>
from date import DateTest
File "test/date.py", line 18, in <module>
import QuantLib as ql
File "build/lib.linux-x86_64-3.7/QuantLib/__init__.py", line 21, in <module>
from .QuantLib import *
File "build/lib.linux-x86_64-3.7/QuantLib/QuantLib.py", line 13, in <module>
from . import _QuantLib
ImportError: build/lib.linux-x86_64-3.7/QuantLib/_QuantLib.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZTIN8QuantLib5EventE
make[2]: *** [check-local] Error 1
make[2]: Leaving directory `/usr/local/QuantLib-SWIG-1.18/Python'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/usr/local/QuantLib-SWIG-1.18/Python'
make: *** [check] Error 2
make: Leaving directory `/usr/local/QuantLib-SWIG-1.18/Python'
Поиск файла "_QuantLib. cpython -37m-x86_64- linux -gnu.so"
$ find $INSTDR -name "_QuantLib.cpython-37m-x86_64-linux-gnu.so"
find: ‘/usr/local/anaconda/pkgs/icu-58.2-h9c2bf20_1ph42j7q7’: Permission denied
find: ‘/usr/local/anaconda/pkgs/ripgrep-11.0.2-he32d670_06p46vhyz’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pixman-0.38.0-h7b6447c_0a7myldqs’: Permission denied
find: ‘/usr/local/anaconda/pkgs/tbb-2020.0-hfd86e86_0fmjulrel’: Permission denied
find: ‘/usr/local/anaconda/pkgs/libpng-1.6.37-hbc83047_0wh03l3az’: Permission denied
find: ‘/usr/local/anaconda/pkgs/libarchive-3.3.3-h5d8350f_54umdx6o2’: Permission denied
find: ‘/usr/local/anaconda/pkgs/gst-plugins-base-1.14.0-hbbd80ab_1e237j2he’: Permission denied
find: ‘/usr/local/anaconda/pkgs/libcurl-7.68.0-h20c2e04_0d3m8rr6e’: Permission denied
find: ‘/usr/local/anaconda/pkgs/certifi-2019.11.28-py37_05cjaenhv’: Permission denied
find: ‘/usr/local/anaconda/pkgs/click-7.0-py37_05b4u3zsi’: Permission denied
find: ‘/usr/local/anaconda/pkgs/et_xmlfile-1.0.1-py37_0zrtyauo5’: Permission denied
find: ‘/usr/local/anaconda/pkgs/future-0.18.2-py37_0x1x6cen6’: Permission denied
find: ‘/usr/local/anaconda/pkgs/lazy-object-proxy-1.4.3-py37h7b6447c_0ny0pvzan’: Permission denied
find: ‘/usr/local/anaconda/pkgs/parso-0.5.2-py_0u6bbsyp3’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pycparser-2.19-py37_0z16oimgg’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pyflakes-2.1.1-py37_0zp3n9i0_’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pyyaml-5.3-py37h7b6447c_01zilcxsm’: Permission denied
find: ‘/usr/local/anaconda/pkgs/send2trash-1.5.0-py37_0a2hxzxjb’: Permission denied
find: ‘/usr/local/anaconda/pkgs/sip-4.19.8-py37hf484d3e_07obpk_qa’: Permission denied
find: ‘/usr/local/anaconda/pkgs/babel-2.8.0-py_03jei626g’: Permission denied
find: ‘/usr/local/anaconda/pkgs/tblib-1.6.0-py_0v3w_thw2’: Permission denied
find: ‘/usr/local/anaconda/pkgs/webencodings-0.5.1-py37_1cjp3cx92’: Permission denied
find: ‘/usr/local/anaconda/pkgs/conda-package-handling-1.6.0-py37h7b6447c_0qgg0icqp’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pexpect-4.8.0-py37_0s4xg5ur2’: Permission denied
find: ‘/usr/local/anaconda/pkgs/urllib3-1.25.8-py37_0ojk2cyug’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pillow-7.0.0-py37hb39fc2d_0867pyldz’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pytest-astropy-header-0.1.2-py_039nzmu42’: Permission denied
find: ‘/usr/local/anaconda/pkgs/sortedcollections-1.1.2-py37_09te1cwym’: Permission denied
find: ‘/usr/local/anaconda/pkgs/terminado-0.8.3-py37_0tc7r30ss’: Permission denied
find: ‘/usr/local/anaconda/pkgs/cryptography-2.8-py37h1ba5d50_0e7nuxg6u’: Permission denied
find: ‘/usr/local/anaconda/pkgs/gevent-1.4.0-py37h7b6447c_0ag9sn_p9’: Permission denied
find: ‘/usr/local/anaconda/pkgs/jupyter_core-4.6.1-py37_0a0mue74k’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pluggy-0.13.1-py37_0925z4h39’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pylint-2.4.4-py37_0weoibz7j’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pytest-5.3.5-py37_0p57f7clq’: Permission denied
find: ‘/usr/local/anaconda/pkgs/python-language-server-0.31.7-py37_04p4v4ww1’: Permission denied
find: ‘/usr/local/anaconda/pkgs/notebook-6.0.3-py37_05jofqe58’: Permission denied
find: ‘/usr/local/anaconda/pkgs/conda-build-3.18.11-py37_0zcg8k_lz’: Permission denied
find: ‘/usr/local/anaconda/pkgs/spyder-4.0.1-py37_0j3p1_0kd’: Permission denied
find: ‘/usr/local/anaconda/pkgs/_ipyw_jlab_nb_ext_conf-0.1.0-py37_03t4jfgzn’: Permission denied
find: ‘/usr/local/anaconda/pkgs/matplotlib-base-3.1.3-py37hef1b27d_0ugcrx9f5’: Permission denied
find: ‘/usr/local/anaconda/pkgs/pytest-arraydiff-0.3-py37h39e3cac_0k5do34h7’: Permission denied
/usr/local/anaconda/lib/python3.7/site-packages/QuantLib-1.18-py3.7-linux-x86_64.egg/QuantLib/_QuantLib.cpython-37m-x86_64-linux-gnu.so
/usr/local/QuantLib-SWIG-1.18/Python/build/lib.linux-x86_64-3.7/QuantLib/_QuantLib.cpython-37m-x86_64-linux-gnu.so
КОМАНДЫ УСТАНОВКИ
# install packages to /usr/local
INSTDR=/usr/local
cd $INSTDR
# ----------------------------------------------------------------------
# Install Dev Tools to Compile Packages
# ----------------------------------------------------------------------
sudo yum groupinstall -y "Development Tools"
# ----------------------------------------------------------------------
# Install Anaconda
# ----------------------------------------------------------------------
# Install Dependencies
sudo yum install -y libXcomposite libXcursor libXi libXtst libXrandr alsa-lib mesa-libEGL libXdamage mesa-libGL libXScrnSaver
# Download Anaconda
sudo wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh
# adjust to latest version as needed
# Run Anaconda Shell
sudo bash ./Anaconda3-2020.02-Linux-x86_64.sh -b -p $INSTDR/anaconda
# "Delete Anaconda Shell"
sudo rm Anaconda3-2020.02-Linux-x86_64.sh
# "Set Anaconda Paths"
export PATH=$INSTDR/anaconda/bin:$PATH
# test with "conda list"
# ----------------------------------------------------------------------
# Install Boost
# ----------------------------------------------------------------------
# Download
# get latest version from https://www.boost.org/
sudo wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz
# Extract
sudo tar -xvf boost_1_72_0.tar.gz
# Remove tarball
sudo rm boost_1_72_0.tar.gz
# Prepare
cd boost_1_72_0
sudo bash ./bootstrap.sh — with-python=python3 — with-libraries=python — prefix=/usr
# Build
sudo ./b2
# Install
sudo ./b2 install
# Vars
export BOOST_INCLUDEDIR=$INSTDR/boost_1_72_0
export BOOST_ROOT=$INSTDR/boost_1_72_0
export BOOST_LIBRARYDIR=$INSTDR/boost_1_72_0/stage/lib
cd ../
# ----------------------------------------------------------------------
# Install QuantLib
# ----------------------------------------------------------------------
# Install QuantLib dependencies
sudo yum install -y graphviz emacs texlive boost-devel
# download
sudo wget https://XXX.s3-ap-southeast-2.amazonaws.com/QuantLib-1.18.tar.gz
# Unpack QuantLib
sudo tar xzf QuantLib-1.18.tar.gz
# Prepare
cd QuantLib-1.18
sudo ./configure --with-boost-include=$INSTDR/include/ --with-boost-lib=$INSTDR/lib/ --disable-shared --enable-static
# Make
sudo make
#Install
sudo make install
sudo ldconfig
# Remove tarball
cd ../
sudo rm QuantLib-1.18.tar.gz
# test the QL installation at this point
# cd QuantLib-1.18/Examples/BermudanSwaption
# g++ BermudanSwaption.cpp -o BermudanSwaption -lQuantLib
# ./BermudanSwaption
g++ CDS.cpp -o CDS1 -lQuantLib
# Vars
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export PATH=$INSTDR/QuantLib-1.18:$PATH
sudo ldconfig
# ----------------------------------------------------------------------
# Install QuantLib-SWIG
# ----------------------------------------------------------------------
#Download
# download released QuantLib-SWIG versions from Bintray at https://bintray.com/quantlib/releases/QuantLib-SWIG.
sudo wget https://XXX.s3-ap-southeast-2.amazonaws.com/QuantLib-SWIG-1.18.tar.gz
#Unpack
sudo tar xzf QuantLib-SWIG-1.18.tar.gz
#Configure
cd QuantLib-SWIG-1.18
sudo ./configure PYTHON=$INSTDR/anaconda/bin/python3
# Make
sudo make -C Python
# Install
sudo make -C Python install
# also tried
# cd Python
# sudo /usr/local/anaconda/bin/python3 setup.py install
# make -C Python check
#Clean up
cd ../
sudo rm QuantLib-SWIG-1.18.tar.gz
# ----------------------------------------------------------------------
# Install Additional Packages
# ----------------------------------------------------------------------
conda install -y pandas
conda install -y matplotlib
# ----------------------------------------------------------------------
# Environment vars
# ----------------------------------------------------------------------
echo "Set Environment vars"
export PYSPARK_DRIVER_PYTHON=$INSTDR/anaconda/bin/python3
export PYSPARK_PYTHON=$INSTDR/anaconda/bin/python3
export PYTHONPATH=$INSTDR/anaconda/bin/python3
sudo ldconfig
# ----------------------------------------------------------------------
# Security Update
# ----------------------------------------------------------------------
sudo yum -y update
**ENVIRONMENTAL VARS**
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $PATH
/usr/local/anaconda/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/include:/usr/lib
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $BOOST_INCLUDEDIR
/usr/local/boost_1_72_0
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $BOOST_ROOT
/usr/local/boost_1_72_0
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $BOOST_LIBRARYDIR
/usr/local/boost_1_72_0/stage/lib
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $LD_LIBRARY_PATH
/usr/local/lib
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $PYSPARK_DRIVER_PYTHON
/usr/local/anaconda/bin/python3
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $PYSPARK_PYTHON
/usr/local/anaconda/bin/python3
[ec2-user@ip-172-31-5-229 QuantLib-SWIG-1.18]$ echo $PYTHONPATH
/usr/local/anaconda/bin/python3
БИБЛИОТЕКИ КОНФИГУРАЦИИ QUANTLIB
$ quantlib-config --libs
-L/usr/local/lib -L/usr/local/lib -lQuantLib
Заранее благодарим за помощь. : -)