Я пытаюсь установить QuantLib и Python QuantLib-SWIG на Mac OSX 10.12.5 Sierra и Python 3.6.1., Но получаю сообщения об ошибках:

ImportError: dlopen(build/lib.macosx-10.7-x86_64-
3.6/QuantLib/_QuantLib.cpython-36m-darwin.so, 2): Symbol not found: __ 
ZN8QuantLib10DateParser14parseFormattedERKSsS2_
Referenced from: build/lib.macosx-10.7-x86_64-
3.6/QuantLib/_QuantLib.cpython-36m-darwin.so
Expected in: flat namespace
in build/lib.macosx-10.7-x86_64-3.6/QuantLib/_QuantLib.cpython-36m-darwin.so

Также как и:

ModuleNotFoundError: No module named '_QuantLib'

Луиджи дал очень полезное предложение в этой теме в списке рассылки пользователей QuantLib , который я реализовал и добился некоторого прогресса, но я все еще не могу завершить установку Python 3.6.

Мне удалось успешно собрать QuantLib для Python 2.

Я также попытался создать QuantLib с динамической загрузкой ниже (т.е. я rm'ed / usr / local / lib / libQuantLib *, а затем перезапустил процесс без '--disable-shared --enable-static' на шаге 5 ниже, но это тоже не удалось .... :(.)

У кого-нибудь есть совет? Заранее спасибо.

Журнал ошибок

~/QuantLib-SWIG-1.10/Python>  /Users/tf/anaconda/bin/python3.6 setup.py 
install 
running install
running build
running build_py
running build_ext
running install_lib
creating /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib
copying build/lib.macosx-10.7-x86_64-3.6/QuantLib/__init__.py -> /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib
copying build/lib.macosx-10.7-x86_64-3.6/QuantLib/_QuantLib.cpython-36m-darwin.so -> /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib
copying build/lib.macosx-10.7-x86_64-3.6/QuantLib/QuantLib.py -> /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib
byte-compiling /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib/__init__.py to __init__.cpython-36.pyc
byte-compiling /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib/QuantLib.py to QuantLib.cpython-36.pyc
running install_egg_info
Writing /Users/tf/anaconda/lib/python3.6/site-packages/QuantLib_Python-1.10-py3.6.egg-info
~/QuantLib-SWIG-1.10/Python> /Users/tf/anaconda/bin/python3.6 setup.py test
running test
running build
running build_py
running build_ext
Traceback (most recent call last):
  File "build/lib.macosx-10.7-x86_64-3.6/QuantLib/QuantLib.py", line 18, in swig_import_helper
    return importlib.import_module(mname)
  File "/Users/tf/anaconda/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 648, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 560, in module_from_spec
  File "<frozen importlib._bootstrap_external>", line 922, in create_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
ImportError: dlopen(build/lib.macosx-10.7-x86_64-3.6/QuantLib/_QuantLib.cpython-36m-darwin.so, 2): Symbol not found: __ZN8QuantLib10DateParser14parseFormattedERKSsS2_
  Referenced from: build/lib.macosx-10.7-x86_64-3.6/QuantLib/_QuantLib.cpython-36m-darwin.so
  Expected in: flat namespace
 in build/lib.macosx-10.7-x86_64-3.6/QuantLib/_QuantLib.cpython-36m-darwin.so

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "setup.py", line 252, in <module>
    'build_ext': my_build_ext
  File "/Users/tf/anaconda/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/Users/tf/anaconda/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/Users/tf/anaconda/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "setup.py", line 58, 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
  File "build/lib.macosx-10.7-x86_64-3.6/QuantLib/__init__.py", line 21, in <module>
    from .QuantLib import *
  File "build/lib.macosx-10.7-x86_64-3.6/QuantLib/QuantLib.py", line 21, in <module>
    _QuantLib = swig_import_helper()
  File "build/lib.macosx-10.7-x86_64-3.6/QuantLib/QuantLib.py", line 20, in swig_import_helper
    return importlib.import_module('_QuantLib')
  File "/Users/tf/anaconda/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_QuantLib'

Как я пытаюсь установить QuantLib

  1. Установить:

    • Xcode 8.3.3
    • Инструменты разработчика командной строки Apple, запустив на терминале: xcode-select --install
    • заварить
    • boost, запустив на терминале: brew install boost
  2. Загрузите смолы из sourceforge:

    • QuantLib 1.10
    • QuantLib-SWIG 1.10
  3. Распакуйте приведенное выше в домашний каталог: / Пользователи / tf /

  4. Переключитесь на QuantLib-1.10, запустив на терминале: компакт-диск ~ / QuantLib-1.10

  5. Запускаем на терминале: #. / configure --with-boost-include = / usr / local / include / --with-boost-lib = / usr / local / lib / --prefix = / usr / local / CXXFLAGS = '- O2 -stdlib = libc ++ -mmacosx-version-min = 10.9 'LDFLAGS =' - stdlib = libc ++ -mmacosx-version-min = 10.9 '--disable-shared --enable-static

  6. Запускаем на терминале: сделать && sudo сделать установить

  7. Протестируйте установку C ++, запустив на терминале: cd Примеры / BermudanSwaption && g ++ -I / usr / local / include / -I / usr / local / include / boost BermudanSwaption.cpp -o bermudanswaption -L / usr / local / lib / -lQuantLib

  8. Переключитесь на QuantLib-SWIG-1.10, запустив на терминале: компакт-диск ~ / QuantLib-SWIG-1.10 Запускаем на терминале: ./configure CXXFLAGS = '- O2 -stdlib = libc ++ -mmacosx-version-min = 10.9' LDFLAGS = '- stdlib = libc ++ -mmacosx-version-min = 10.9'

  9. Сделайте версию Python для C ++, запустив на терминале: cd Python && /Users/tf/anaconda/bin/python3.6 build.py build

  10. Установите в анаконду, запустив на терминале: /Users/tf/anaconda/bin/python3.6 setup.py установить

  11. Проверьте, запустив на терминале: /Users/tf/anaconda/bin/python3.6 setup.py тест

2
Taylor Fitch 7 Авг 2017 в 08:21
Привет, Тейлор! Вопросы о переполнении стека закрываются только тогда, когда с ними что-то не так. Вы имеете в виду пометку вопроса как «отвеченный», что мы делаем, щелкая пустую галочку на полях ответа, чтобы она стала зеленой. Только вы (первоначальный вопросник) можете это сделать, и вы можете только сделать это после ответа. Итак, что вам нужно сделать, это отправить ответ на свой вопрос и пометить его как принятый, как только система позволит вам это сделать. (Ответы никогда не следует редактировать в самом вопросе. Здесь мы сохраняем четкое разделение.)
 – 
Cody Gray
9 Авг 2017 в 16:38

1 ответ

Лучший ответ

Как я успешно установил QuantLib-SWIG с помощью Луиджи

  1. Установить:

    • Xcode 8.3.3
    • Инструменты разработчика командной строки Apple, запускаемые на терминале: xcode-select --install
    • заварить
    • увеличить, запустив на терминале: brew install boost
  2. Загрузите смолы из sourceforge:

    • QuantLib 1.10
    • QuantLib-SWIG 1.10
  3. Извлеките указанное выше в домашний каталог: /Users/tf/

  4. Переключитесь на QuantLib-1.10, запустив на терминале: cd ~/QuantLib-1.10

  5. Запустить на терминале: ./configure --with-boost-include=/usr/local/include/ --with-boost-lib=/usr/local/lib/ --prefix=/usr/local/ CXXFLAGS='-O2 -stdlib=libc++ -mmacosx-version-min=10.9' LDFLAGS='-stdlib=libc++ -mmacosx-version-min=10.9' --disable-shared --enable-static

  6. Запустить на терминале: make && sudo make install

  7. Протестируйте установку C ++, запустив на терминале: cd Examples/BermudanSwaption && g++ -I/usr/local/include/ -I/usr/local/include/boost BermudanSwaption.cpp -o bermudanswaption -L/usr/local/lib/ -lQuantLib

  8. Переключитесь на QuantLib-SWIG-1.10, запустив на терминале: cd ~/QuantLib-SWIG-1.10 Запустить на терминале: ./configure CXXFLAGS='-O2 -stdlib=libc++ -mmacosx-version-min=10.9' LDFLAGS='-stdlib=libc++ -mmacosx-version-min=10.9'

  9. Сделайте версию Python для C ++, запустив на терминале: cd Python && export CXXFLAGS='-O2 -stdlib=libc++ -mmacosx-version-min=10.9' && export LDFLAGS='-stdlib=libc++ -mmacosx-version-min=10.9' && /Users/tf/anaconda/bin/python3.6 setup.py build

  10. Установите в анаконду, запустив на терминале: /Users/tf/anaconda/bin/python3.6 setup.py install

  11. Проверьте, запустив на терминале: /Users/tf/anaconda/bin/python3.6 setup.py test

2
Taylor Fitch 10 Авг 2017 в 03:37