Как установить Боб из исходного кода без conda - PullRequest
0 голосов
/ 11 июня 2018

Боб рекомендует своим пользователям установить свои пакеты, используя conda, но я не хочу использовать conda.Как я могу установить его из источника?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

По какой-то причине я не могу комментировать пост @ 183.amir, но это следует воспринимать как комментарий к Как установить Боба из источника без conda .Чтобы ускорить компиляцию в последнем скрипте 183.amir, вы можете компилировать в параллельных потоках.Просто установите переменную среды BOB_BUILD_PARALLEL=N, где N - максимальное количество параллельных процессов на вашем компьютере.

0 голосов
/ 11 июня 2018

Объяснение

Прежде всего, использование conda для установки Боба намного проще и является поддерживаемым способом установки Боба.Пожалуйста, подумайте еще раз, чтобы использовать conda для установки Боба, прежде чем продолжить.Боб написан на смеси C ++ и Python и ссылается на множество различных библиотек C / C ++, а Conda - это не зависящий от языка менеджер бинарных пакетов, который бы справился со всем этим.

Если вы хотите установить Боба изИсходный код, сначала необходимо установить его зависимости вручную.Зависимости для каждого пакета перечислены в рецепте conda каждого пакета Bob.Из его рецепта conda вы должны установить (если они существуют) requirements:build, requirements:host, requirements:run и test:requires.Эти пакеты являются пакетами conda, а не пакетами pip;некоторые из них могут быть пакетами pip (имена могут отличаться), а некоторые из них могут быть просто библиотеками C / C ++, которые вы должны установить с помощью менеджера пакетов вашей системы (или из исходного кода).

Например,Рецепт conda от bob.extension: здесь :

requirements:
  host:
    - python {{ python }}
    - setuptools {{ setuptools }}
  run:
    - python
    - setuptools
    - click
    - click-plugins

test:
  requires:
    - bob-devel {{ bob_devel }}.*
    - nose
    - coverage
    - sphinx
    - sphinx_rtd_theme
    - boost
    - cmake
    - pkg-config
    - freetype
    - libblitz
    - numpy
    - {{ compiler('c') }}
    - {{ compiler('cxx') }}
    - bob.buildout

Анализ этого рецепта будет означать, что вам необходимо установить: boost, cmake, pkg-config, freetype, libblitz, C and C++ compilers и, возможно, numpy сначала с помощью диспетчера пакетов вашей системы, а затем установите click, click-plugins, nose, coverage, sphinx, sphinx_rtd_theme и bob.buildout с пипсами(Вы также можете посмотреть в requirements.txt и test-requirements.txt пакетов Bob для имен зависимостей пакетов pip, но они могут не обновляться в соответствии с его рецептом conda).bob-devel - это метапакет conda, который вам не нужно устанавливать, если вы не используете conda.

Это настроит вашу среду на готовность к компиляции (при необходимости), установке и тестированию bob.extension.После настройки среды вы можете использовать pip для установки bob.extension:

pip install bob.extension

Затем вам нужно будет установить следующий пакет Bob в порядке зависимостей пакетов Bob.Как видите, это может занять довольно много времени, но это единственный способ сделать это, который будет работать, когда пакеты Боба разрабатываются и их зависимости меняются.

Инструкции

Эти инструкциипоможет вам установить большинство пакетов Bob, содержащих код C ++, которые сложнее установить.После того, как вы установили эти пакеты, вы, скорее всего, сможете установить остальные пакеты Bob, используя pip.

Зависимости

Сначала необходимо установить зависимости пакетов Bob с помощью диспетчера пакетов вашей системы.

+-------------+------+-------------------------+---------------------+
| Library     | Min. | License                 | Notes               |
|             | Vers |                         |                     |
|             | io   |                         |                     |
|             | n    |                         |                     |
+=============+======+=========================+=====================+
| Std. C/C++  | any  | Depends on the compiler | Required by all     |
| Libraries   |      |                         | packages with C/C++ |
|             |      |                         | bindings            |
+-------------+------+-------------------------+---------------------+
| `Blitz++ <h | 0.10 | `Artistic-2.0 <http://w | Required by all     |
| ttp://www.o |      | ww.opensource.org/licen | packages with C/C++ |
| onumerics.o |      | ses/Artistic-2.0>`__    | bindings            |
| rg/blitz>`_ |      | or LGPLv3+ or GPLv3+    |                     |
| _           |      |                         |                     |
+-------------+------+-------------------------+---------------------+
| `Lapack <ht | any  | BSD-style               | Required by         |
| tp://www.ne |      |                         | ``bob.math``        |
| tlib.org/la |      |                         |                     |
| pack>`__    |      |                         |                     |
+-------------+------+-------------------------+---------------------+
| `Python <ht | 2.5  | `Python-2.0 <http://www | Required by all     |
| tp://www.py |      | .opensource.org/license | packages            |
| thon.org>`_ |      | s/Python-2.0>`__        |                     |
| _           |      |                         |                     |
+-------------+------+-------------------------+---------------------+
| `Boost <htt | 1.34 | `BSL-1.0 <http://www.op | Required by all     |
| p://www.boo |      | ensource.org/licenses/B | packages with C/C++ |
| st.org>`__  |      | SL-1.0>`__              | bindings            |
+-------------+------+-------------------------+---------------------+
| `HDF5 <http | 1.8. | `HDF5                   | Required by all I/O |
| ://www.hdfg | 4    | License <ftp://ftp.hdfg | operations (direct  |
| roup.org/HD |      | roup.org/HDF5/current/s | or indirect         |
| F5>`__      |      | rc/unpacked/COPYING>`__ | dependencies to     |
|             |      | (BSD-like, 5 clauses)   | ``bob.io.base``)    |
+-------------+------+-------------------------+---------------------+
| `libpng <ht | 1.2. | `libpng                 | Required by all     |
| tp://libpng | 42   | license <http://www.lib | packages that do    |
| .org/pub/pn | ?    | png.org/pub/png/src/lib | image I/O and       |
| g/libpng.ht |      | png-LICENSE.txt>`__     | manipulation        |
| ml>`__      |      |                         | (depend directly or |
|             |      |                         | indirectly on       |
|             |      |                         | ``bob.io.image``)   |
+-------------+------+-------------------------+---------------------+
| `libtiff <h | 3.9. | BSD-style               | Required by all     |
| ttp://www.r | 2    |                         | packages that do    |
| emotesensin |      |                         | image I/O and       |
| g.org/libti |      |                         | manipulation        |
| ff/>`__     |      |                         | (depend directly or |
|             |      |                         | indirectly on       |
|             |      |                         | ``bob.io.image``)   |
+-------------+------+-------------------------+---------------------+
| `giflib <ht | 4.1. | `MIT <http://www.openso | Required by all     |
| tp://giflib | 6-9  | urce.org/licenses/MIT>` | packages that do    |
| .sourceforg |      | __                      | image I/O and       |
| e.net/>`__  |      |                         | manipulation        |
|             |      |                         | (depend directly or |
|             |      |                         | indirectly on       |
|             |      |                         | ``bob.io.image``)   |
+-------------+------+-------------------------+---------------------+
| `libjpeg <h | 6.2? | `GPL-2.0 <http://www.op | Required by all     |
| ttp://libjp |      | ensource.org/licenses/G | packages that do    |
| eg.sourcefo |      | PL-2.0>`__              | image I/O and       |
| rge.net/>`_ |      | or later (also          | manipulation        |
| _           |      | commercial)             | (depend directly or |
|             |      |                         | indirectly on       |
|             |      |                         | ``bob.io.image``)   |
+-------------+------+-------------------------+---------------------+
| `FFMpeg <ht | 0.5  | `LGPL-2.1 <http://www.o | Required by all     |
| tp://ffmpeg | (ffm | pensource.org/licenses/ | packages that do    |
| .org>`__    | pe   | LGPL-2.1>`__            | video I/O and       |
| or          | g)   | or later, or            | manipulation        |
| `libAV <htt | or   | `GPL-2.0 <http://www.op | (depend directly or |
| p://libav.o | 0.8  | ensource.org/licenses/G | indirectly on       |
| rg>`__      | (lib | PL-2.0>`__              | ``bob.io.video``)   |
|             | av   | or later                |                     |
|             | )    |                         |                     |
+-------------+------+-------------------------+---------------------+
| `MatIO <htt | 1.3. | `BSD-2-Clause <http://w | Required by all     |
| p://matio.s | 3?   | ww.opensource.org/licen | packages that do    |
| ourceforge. |      | ses/BSD-2-Clause>`__    | Matlab I/O and      |
| net>`__     |      |                         | manipulation        |
|             |      |                         | (depend directly or |
|             |      |                         | indirectly on       |
|             |      |                         | ``bob.io.matlab``)  |
+-------------+------+-------------------------+---------------------+
| `VLFeat <ht | 0.9. | `BSD-2-Clause <http://w | Required by         |
| tp://www.vl | 14   | ww.opensource.org/licen | ``bob.ip.base`` and |
| feat.org/>` |      | ses/BSD-2-Clause>`__    | all dependents      |
| __          |      |                         |                     |
+-------------+------+-------------------------+---------------------+
| `LIBSVM <ht | 2.89 | `BSD-3-Clause <http://w | Required by         |
| tp://www.cs | +    | ww.opensource.org/licen | ``bob.learn.libsvm` |
| ie.ntu.edu. |      | ses/BSD-3-Clause>`__    | `                   |
| tw/~cjlin/l |      |                         | and all dependents  |
| ibsvm/>`__  |      |                         |                     |
+-------------+------+-------------------------+---------------------+
| `CMake <htt | 2.8  | `BSD-3-Clause <http://w | Required by all     |
| p://www.cma |      | ww.opensource.org/licen | packages with C/C++ |
| ke.org>`__  |      | ses/BSD-3-Clause>`__    | bindings. **Use at  |
|             |      |                         | least CMake 2.8.12  |
|             |      |                         | on Mac OS X**.      |
+-------------+------+-------------------------+---------------------+
| `pkg-config | any  | `GPL-2.0 <http://www.op | Required to find    |
|  <http://ww |      | ensource.org/licenses/G | dependencies while  |
| w.freedeskt |      | PL-2.0>`__              | building bob        |
| op.org/wiki |      |                         | packages.           |
| /Software/p |      |                         |                     |
| kg-config/> |      |                         |                     |
| `__         |      |                         |                     |
+-------------+------+-------------------------+---------------------+

После установки зависимостей вы можете использовать pip для установки из исходного кода.

Можно устанавливать пакеты, используя pip, глобально или в вашем личном virtualenv, если вам так нравятся ваши рабочие среды Python.Вам нужно будет вручную установить все необходимые вам пакеты (прямо или косвенно), так как pip / setuptools в настоящее время не имеет способа последовательной установки пакетов Python, которые зависят друг от друга для сборки , напримерслучай многих пакетов.

Например, чтобы установить bob.io.image во вновь созданной виртуальной среде, вот последовательность команд для выполнения:

$ pip install numpy
$ pip install bob.extension
$ pip install bob.blitz
$ pip install bob.core
$ pip install bob.io.base
$ pip install bob.io.image

Каждая команда pipдолжен выполняться отдельно, с учетом межпакетной зависимости.

Следующее не будет работать должным образом:

$ #Do not do this:
$ pip install numpy bob.io.image

Зависимость основных пакетов можно обобщить вДля установки всех основных пакетов можно использовать 7 слоев и следующий скрипт, используя pip:

$ bash pip_install_bob.sh
-------------------------
#!/bin/bash
set -e

get_layer() {
case $1 in
 1)
   packages=("bob.extension")
   ;;
 2)
   packages=("bob.blitz")
   ;;
 3)
   packages=("bob.core" "bob.ip.draw")
   ;;
 4)
   packages=("bob.io.base" "bob.sp" "bob.math")
   ;;
 5)
   packages=("bob.ap" "bob.measure" "bob.db.base" "bob.io.image" "bob.io.video" "bob.io.matlab" "bob.ip.base" "bob.ip.color" "bob.ip.gabor" "bob.learn.activation" "bob.learn.libsvm" "bob.learn.boosting")
   ;;
 6)
   packages=("bob.io.audio" "bob.learn.linear" "bob.learn.mlp" "bob.db.wine" "bob.db.mnist" "bob.db.atnt" "bob.ip.flandmark" "bob.ip.facedetect" "bob.ip.optflow.hornschunck" "bob.ip.optflow.liu")
   ;;
 7)
   packages=("bob.learn.em" "bob.db.iris")
   ;;
esac
}

for layer in `seq 1 7`;
do
 get_layer ${layer}
 for pkg in "${packages[@]}";
 do
   pip install $pkg
 done
done

Чтобы ускорить компиляцию в последнем скрипте, вы можете компилировать в параллельные потоки.Просто установите переменную среды BOB_BUILD_PARALLEL=N, где N - максимальное количество параллельных процессов на вашем компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...