Стандартный подход не работает:
brew install libtorrent-rasterbar
Установит требование повышения (связанное с системой Python), а libtorrent-rasterbar установит без каких-либо привязок Python вообще.
Как вы это исправите?
После многих копаний, поиска в Google, проб и ошибок я смог заставить все это работать. Я делюсь своим опытом здесь в надежде избавить других от неприятностей.
Первый шаг - убедиться, что ваш Python установлен правильно. Проверьте, which python
возвращает правильную версию Python (вероятно, что-то вроде /usr/local/bin/python
)
Проверьте, связано ли ваше повышение с верной версией Python, используя следующую команду (при необходимости измените /usr /local на ваш префикс Homebrew).
otool -L /usr/local/lib/libboost_python-mt.dylib
Результат должен содержать строку:
/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
Если он указывает где-то в /System/Library/Frameworks
, вам нужно пересобрать ваши библиотеки наддува и форсировать сборку из исходного кода (ссылка):
brew rm boost ; brew install boost --build-from-source
Как только это будет сделано, вы можете запустить вышеуказанную строку, чтобы убедиться, что она связана правильно.
Теперь, когда boost установлен правильно, libtorrent-rasterbar может использовать их для создания привязок Python. Мы должны отредактировать формулу, чтобы включить их, а также обучить процесс сборки тому, где их найти.
Выполните brew edit libtorrent-rasterbar
и измените его так, чтобы он соответствовал следующему:
def install
system "./configure", "--disable-debug",
"--disable-dependency-tracking",
"--enable-python-binding",
"--with-boost-python=mt",
"--prefix=#{prefix}"
Здесь две важные строки включают включение привязки python с --enable-python-binding
а вторая - --with-boost-python=mt
чтобы показать, что она была установлена с суффиксом "mt" (ref).
Это позволит процессу сборки распознавать библиотеку надстройки, которая была установлена на первом этапе. Поэтому закройте редактор и выполните brew install libtorrent-rasterbar
как обычно.
Наконец, чтобы убедиться, что все это работает:
% python
Python 2.7.3 (default, Feb 10 2013, 10:53:34)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.24)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import libtorrent
>>>
Я нашел на github комментарий об установке пакетов поверх brew, например, libtorrent-rasterbar. Они не ссылаются на python без явного указания brew сделать это, поэтому вы должны добавить команду --with-python к brew install:
brew install libtorrent-rasterbar --with-python
Вам не нужно устанавливать Python из Brew, вы можете использовать его уже на вашем Mac. Но вы должны связать пакеты brew python с вашим путем, чтобы вы могли импортировать их непосредственно из python:
mkdir -p /Users/filip/Library/Python/2.7/lib/python/site-packages
echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/filip/Library/Python/2.7/lib/python/site-packages/homebrew.pth
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import libtorrent
>>>
Проверено на: MAC OS X Yosemite 10.10.3
brew install libtorrent-rasterbar --with-python
работает с python .