Как установить Боб из исходного кода без conda
Боб рекомендует своим пользователям устанавливать свои пакеты, используя conda
, но я не хочу использовать conda
, Как я могу установить его из источника?
2 ответа
объяснение
Прежде всего, использование conda для установки Bob намного проще и является поддерживаемым способом установки Bob. Пожалуйста, подумайте еще раз, чтобы использовать conda для установки Боба, прежде чем продолжить. Боб написан на смеси C++ и Python и ссылается на множество различных библиотек C/C++, а Conda - не зависящий от языка менеджер двоичных пакетов, который бы справился со всеми этими задачами.
Если вы хотите установить Боба из исходного кода, вам сначала нужно установить его зависимости вручную. Зависимости для каждого пакета перечислены в рецепте conda каждого пакета Bob. Из его рецепта Конда, вы должны установить (если они существуют) 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.
зависимости
Сначала вам нужно установить зависимости пакетов Боба, используя менеджер пакетов вашей системы.
+-------------+------+-------------------------+---------------------+
| 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
максимальное количество параллельных процессов на вашей машине.
По какой-то причине мне не разрешено комментировать сообщение @183.amir, но это следует воспринимать как комментарий к статье Как установить Боба из источника без conda. Чтобы ускорить компиляцию в последнем скрипте 183.amir, вы можете компилировать в параллельных потоках. Просто установите переменную среды BOB_BUILD_PARALLEL=N
где N
максимальное количество параллельных процессов на вашей машине.