Как заставить NLopt работать на Python3 на macOS Catalina с домашним пивом? - PullRequest
1 голос
/ 19 февраля 2020


ниже вы сначала найдете сводку и пропустите подсказку к основной проблеме, а затем длинную версию со всем. Это мой первый вопрос здесь, и я надеюсь, что не нарушил никаких правил, делая пост таким длинным и имея несколько вопросов ...
Я рад любому ответу по любому из вопросов !!

Редактировать: я сократил весь пост и вырезал все "вопросы в пути", так что теперь речь идет только о трудностях nlopt

Short

Установка nlopt через homebrew не работает, поскольку файлы отсутствуют. Информацию об этой части ТОЛЬКО пропустите к жирному «Основные проблемы».

Предупреждение: Я довольно новичок во всем этом с оболочкой, homebrew, et c. так что я не очень знаком с именами и терминами. Пожалуйста, будьте терпеливы со мной:)


Long

Переустановка моего "старого" MacBook с нуля Мне пришлось все заново установить и много читать о том, как все работает. Всю дорогу, читая бесчисленные посты и руководства, я выучил столько, сколько мне казалось - и как можно меньше из-за количества. Теперь я застрял.
Для проекта, над которым я работаю, мне нужны Python 3, CobraPy и NLopt. Это то, что я сделал до сих пор (я перечисляю все свои команды и некоторые полученные предупреждения b c Я не знаю, что может стать актуальным):

Я использую zsh оболочки, и это все происходит в ~, если не указано иное. Кроме того, я всегда устанавливал все вещи, которые называются необходимыми в документации, или в качестве меры предосторожности, если об этом говорится в руководствах (на которые у меня больше нет ссылок b c Я работаю над всем этим, в том числе больше недели))

  1. Установить XCode
    • через AppStore
    • xcode-select --install
  2. Установить домашний напиток

    % ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    % brewup # alias brewup='brew update; brew upgrade; brew cleanup; brew doctor'
    
  3. Pyenv

    % brew install pyenv
    ==> Installing dependencies for pyenv: autoconf, openssl@1.1, pkg-config and readline
    % echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc
    % source ~/.zshrc
    
  4. подготовка Python установки

    % brew install zlib sqlite sqlite3 xz openssl readline
    % brewup
    # and bc someone said it's necessary for no problems with build:
    % export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib"
    % export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include"
    
  5. Python

    % brew upgrade pyenv
    % pyenv install 3.8.1
    % pyenv global 3.8.1
    % pip install --upgrade pip
    

    и подтвердил, что он работает с version, versions, which python, python -V, pip -V

  6. Pyenv-virtualenv & Extras

    % brewup 
    % brew install pyenv-virtualenv
    % echo -e 'if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi' >> ~/.zshrc
    

    и тестирование путем создания виртуальной среды, установите его локально в качестве стандартного в папке проекта с помощью pyenv local VE и

    (VE) folder/project % pip install numpy
    (VE) folder/project % sudo pip install cobra
    ~ % brew install grep findutils # bc "good for cobra"
    
  7. NLopt

    % brew install cmake
    % brew install nlopt
    

    Реальных проблем пока нет. Все вроде нормально.
    И тогда я начинаю пытаться завершить sh установку NLopt с инструкциями из документации / README.md:


Основные проблемы

продолжение для nlopt после % brew install nlopt

~ % cd /usr/local/Cellar/nlopt/2.6.1
Cellar/nlopt/2.6.1 % mkdir build
Cellar/nlopt/2.6.1 % cd build
nlopt/2.6.1/build % cmake ..
CMake Error: The source directory "/usr/local/Cellar/nlopt/2.6.1" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

После еще нескольких слепых попыток, даже в nlopt / 2.6.1 / lib / cmake / nlopt, я обнаружил, что при установке NLopt в доморощенной среде много вещей отсутствует по сравнению с файлами git (см. GitHub NLopt ) - включая папки и необходимые файлы CMakeLists.txt:

Cellar/nlopt/2.6.1 % ls -1
AUTHORS
COPYING
COPYRIGHT
ChangeLog
INSTALL_RECEIPT.json
NEWS.md
README.md
TODO
include
lib
share

Вопрос A: я сделал что-то не так ? Я искал людей с похожими проблемами, но не смог найти помощь.

Вопрос B: можно ли просто загрузить NLopt вручную, поместить все файлы в каталог выше ( заменив вещи там (кроме файла .brew)), просто проигнорируйте, что доморощенный дурак, а затем выполните окончательную калибровку с помощью cmake?

Независимо от того, как мы это сработаем: I прочитайте что-нибудь об этом, если вы не используете т Затем система python, после выполнения команды cmake, вы должны заново связать определенные вещи и создать их с помощью nlopt.
Вопрос C: когда я помещаю новые ссылки в cmake, должен ли я ссылаться на версию Python, с которой я хочу работать (здесь 3.8.1), или я должен связать прокладку из pyenv? И в первом случае мне придется перепривязывать каждый раз, когда я обновляюсь до новой версии (поэтому я надеюсь, что второй вариант верен)?


Повторная проверка снова, я также нашел это side PyPI nlopt , который «поддерживает Python версии 3.6» и «устанавливает цепочку инструментов для создания колес pypi для библиотеки NLOpt». Этот NLopt устанавливается через pip. Сейчас:
Вопрос D: Означает ли это, что это также работает, если я установил pip в моем VE? И нужно ли его активировать через cmake et c?
B C, это относится к документации по использованию NLopt с Python, но ничего не говорит о настройке после установки pip.


Я не знаю, что делать в данный момент: что будет просто заполнять и загружать мою систему и что позволит мне начать работу над моим проектом? Заранее спасибо :)

...